Pages : 1
#1 Le 08/03/2011, à 17:04
- ratata77
Sed variables et slashs
bonjour,
quelqu'un peut'il m'éclairer concernant sed.
Comment peux on changer la ligne:
A:20100303-112352:test.csv:TEST_FLUX.csv:P0::/tmp::::1
par
A:20110308-161752:test.csv:TEST_FLUX.csv:P0::/tmp::::6
dans un fichier sachant que la premiere ligne se trouve dans la variable $BEFORE et la ligne a remplacer dans le fichier cible se trouve dans la variable $AFTER sed n'a pas l'air d'apprécier les "/" et les variables...
qq chose comme sed -n '/'${BEFORE}'/'${AFTER}'/' ./fichier_cible.txt
j'obtiens le message d'erreur :
Label too long:
Merci de votre aide
Hors ligne
#2 Le 08/03/2011, à 18:51
- wido
Re : Sed variables et slashs
Bonjour,
par exemple
sed -e "s/ /_/g"
peut être remplacé par
sed -e "s! !_!g"
Hors ligne
#3 Le 08/03/2011, à 18:58
- Levi59
Re : Sed variables et slashs
ou aussi mettre les variables entre guillements doubles en plus des simples:
sed -n '/'"${BEFORE}"'/'"${AFTER}"'/' ./fichier_cible.txt
(' " variable " ')
Hors ligne
#4 Le 08/03/2011, à 21:05
- ratata77
Re : Sed variables et slashs
Merci LEVI59,
Mais j'obtiens le message suivant avec cette solution:
sed -n '/'"${BEFORE}"'/'"${AFTER}"'/' ./fichier_cible.txt
sed: impossible de trouver l'etiquette pour sauter à 'mp::::1/A:20110308-161752:test.csv:TEST_FLUX.csv:P0::/tmp::::6
'
sed semble couper ma chaine au niveau du t de "tmp" / "mp" de la premiere variable
.....une autre idée ?
Hors ligne
#5 Le 08/03/2011, à 21:09
- Levi59
Re : Sed variables et slashs
Tiens? Je pensais que cela serais suffisant... Mea Culpa
Sinon la proposition de wido peut également résoudre ton problème:
sed -n '!'"${BEFORE}"'!'"${AFTER}"'!' ./fichier_cible.txt
Tu peux choisir n'importe quel séparateur pour sed tant que tu conserve la même au sein d'une même commande.
Hors ligne
#6 Le 08/03/2011, à 21:24
- ratata77
Re : Sed variables et slashs
cette fois ci j'obtiens le message:
sed: -e expression n1, caractere 2: commande inconnue: 'A'
Hors ligne
#7 Le 09/03/2011, à 15:47
- AnsuzPeorth
Re : Sed variables et slashs
Bjr,
sed "s@${BEFORE}@${AFTER}@" fichier
Comme il a été dit, le délimiteur peut être changer, il est pris en compte automatiquement si il se trouve après le s.
Si pas de s, il faut l'échapper.
sed '\@item@,@item2@.....'
Comme dans tes variables il y a un /, il faut changer de délimiteur obligatoirement. Et des guillemets suffisent pour utiliser des variables dans sed.
Dernière modification par AnsuzPeorth (Le 09/03/2011, à 15:49)
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#8 Le 10/03/2011, à 17:53
- ratata77
Re : Sed variables et slashs
Merci à tous, mon souci est maintenant réglé grace à vous.
Hors ligne
Pages : 1