sed et valeurs ascii<32
bonjour,
j'ai un problème avec sed qui n'accepte pas les char que je lui passe qui sont
en dessous de 0x20 (32) :
en gros je voudrais faire ça sur un ensemble de texte :
s/$'\x0A\x0A'/$'\xAB'
s/$'\x0A'/$'\x020'
s/$'\xAB'/$'\x0A'
le but etant de les 'dejustifier' ce sont des textes justifiés avec uniquement
des \n
donc je remplace les doublons \n\n par un truc intermediaire, puis les \n par
des espaces, puis le truc intermediaire est retransformé en un unique \n
si je le fait à la main avec un editeur hexa ça marche
avec sed quand les valeur ascii sont >= 32 ça marche, mais sinon j'obtient le
mess:
[rno@tektem:~] repall.sh $'\x0A\x0A' $'\xAB'
sed: -e expression #1, char 2: Unterminated `s' command
peut être est ce mon script qui est mal foutu? le voici:
[rno@tektem:~] cat /usr/local/bin/repall.sh
#!/bin/sh
#remplace une chaine par une autre dans tous les fichiers d'un repertoire
set -e
tmp=/tmp/replace.$$
usage () {
echo "usage: repall.sh string1 string2"
exit -1
}
[ -z "$1" -o -z "$2" ] && usage
for FILE in * ; do
if [ -f $FILE ] ; then
cp $FILE $tmp
sed -e "s/$1/$2/g" < $tmp > $FILE
echo done on $FILE
fi
merci
a+
--
rno
[ To subscribe or unsubscribe, go to http://linuxbe.org/ml.php ]
[ http://LinuxBe.org - http://OpenBe.net - listmaster@linuxbe.org ]
Reply to: