[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: