comment utiliser la commande sed pour remplcer une chaine de caractere par une autre dans un ficheir
je veux remplacer
parCitation:
-}****
merci de m'aiderCitation:
-}
Version imprimable
comment utiliser la commande sed pour remplcer une chaine de caractere par une autre dans un ficheir
je veux remplacer
parCitation:
-}****
merci de m'aiderCitation:
-}
Vous pouvez vous inspirer de ceci
Code:cat mon_fichier | sed "s/\*//g"
voila mon script
jusqua' la c bon, mais dans mon fichier d'arrivée SGM-FLEx..., je dois enlever des étoiles (jaiCode:
1
2
3
4
5
6
7
8 cd "c:/Temp_flex" for x in `ls` do cat $x >> SKB-FLEX.D`date +%d%m%y`_0000`date +%OH%OM` mv $x "c:/archive_flex_out" done mv SKB-FLEX.D`date +%d%m%y`_0000`date +%OH%OM` "c:/test/"
que je veux remplacer pas justeCode:-}*****
)Code:-}
Ceci veut dire : subsitue "*" (\*) par rien //Code:s/\*//g
* fait partie des "Meta caractères" et pour ne pas etre interpreté comme tel , il faut le preceder d'un "anti slash"
Vous pouvez voir aussi la description de sed ici
ça ne marche pas, voila l'erreur qu'il me sort
voila la partie du scriptCode:
1
2 sed: ?, *, +, or { } not preceded by valid regular expression sed: ?, *, +, or { } not preceded by valid regular expression
Code:cat $x | sed "s/\*****//g"
g compris, il faut mettre juste une seule étoile; ça marche mais juste sur la sortie standard (cad sur l'écran), comment faire de sorte que la modification soit définitive dans le fichier lui même
merci encore
A noter que toutes les étoiles du fichier vont disparaître.Citation:
Envoyé par man sed
On peut également utiliser tr pour avoir le même résultat avec un syntaxe encore plus simple
Code:echo "n'importe*quoi*" | tr -d '*'
c bon ça marche,
voila mon script
"Code:
1
2
3
4
5
6
7 cd "c:/Temp" for x in `ls` do cat $x |sed "s/\*//g" >>SKB.D`date +%d%m%y`_0000`date +%OH%OM` mv $x "c:/archive" done mv SKB.D`date +%d%m%y`_0000`date +%OH%OM` "e:/app/data/bo/
comme vous remarque le nom de mon fichier SKB.D....
est composée d'une date et d'une heure, j'aurai aimé le stocké dans une variable de peur que l'heure change au cour de l'exécution du script.
comment puis-je modifier mon script
merci encore pour votre aide précieuse
Code:
1
2 bla=$(date) echo $bla
en cshCode:
1
2
3
4
5
6
7
8
9
10 set V_FIC="SKB.D`date +%d%m%y`_0000`date +%OH%OM`" cd "c:/Temp" for x in `ls` do cat $x |sed "s/\*//g" >> $V_FIC mv $x "c:/archive" done mv $V_FIC "e:/app/data/bo/"