J'ai plus de 1000 fichiers et je veux remplacer un texte spécial dans chacun d'entre eux avec une autre phrase. Comment puis-je le faire par script shell dans Linux?Remplacer un texte par programmation shell
0
A
Répondre
5
sed -i 's/old-word/new-word/g' *.txt
http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/
0
Utilisez sed.
1
Quelque chose comme ceci:
for file in *.txt
do
cp $file $file.tmp
cat $file.tmp | sed 's/foo/bar/g' > $file
done
+1
Vous pouvez utiliser '-i' pour éditer les fichiers en place, il n'y a donc pas besoin d'un fichier temporaire ni d'une boucle. – poke
1
Vous pouvez également utiliser perl:
perl -pi -e 's/find/replace/g' *.txt
1
Juste bash
for file in *.txt
do
while read -r line
do
case "$line" in
"*pattern*") line="${line//pattern/new}";;
esac
echo "$line"
done <"$file" > t
mv t "$file"
done
merci.simple et claire réponse;) –