Comment remplacer quelques correspondances dans une ligne en utilisant sed?Comment remplacer quelques correspondances dans une ligne en utilisant sed
J'ai un file.log avec le texte:
sometext1;/somepath1/somepath_abc123/somepath3/file1.a;/somepath1/somepath_abc123/somepath3/file1.o;/somepath1/somepath_abc123/somepath3/file1.cpp; sometext2;/somepath1/somepath_abc123/somepath3/file2.a;/somepath/somepath_abc123/somepath3/file2.o;/somepath1/somepath_abc123/somepath3/file2.cpp;
Et je suis en train de remplacer somepath1/somepath_abc123/somepath3
dans chaque ligne.
Mais peu probable que les résultats est faux:
sometext1;/mysomepath1/mysomepath2/mysomepath3/file1.cpp; sometext2;/mysomepath1/mysomepath2/mysomepath3/file2.cpp;
Comme vous pouvez voir les rendements sed que le dernier match.
J'ai essayé le code suivant:
#!/bin/sh FILE="file.log" OLD="somepath1\/somepath_.*\/somepath3" NEW="mysomepath1\/mysomepath2\/mysomepath3" sed 's|'"$OLD"'|'"$NEW"'|g' $FILE > $FILE.out
Quel est le problème avec l'expression?
parce que vous sed sed regex est gourmand. – ghostdog74