GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser grep et sed pour rechercher et remplacer une chaîne

Vous pouvez utiliser find et -exec directement dans sed plutôt que de localiser d'abord oldstr avec grep . C'est peut-être un peu moins efficace, mais ce n'est peut-être pas important. De cette façon, le sed le remplacement est exécuté sur tous les fichiers listés par find , mais si oldstr n'est-il pas là, il ne fonctionnera évidemment pas dessus.

find /path -type f -exec sed -i 's/oldstr/newstr/g' {} \;

Votre solution est ok. essayez seulement de cette façon :

files=$(grep -rl oldstr path) && echo $files | xargs sed....

alors exécutez le xargs uniquement lorsque grep renvoie 0 , par exemple. lorsqu'il trouve la chaîne dans certains fichiers.


J'ai repris l'idée de Vlad et je l'ai légèrement modifiée. Au lieu de

grep -rl oldstr path | xargs sed -i 's/oldstr/newstr/g' /dev/null

Ce qui donne

sed: couldn't edit /dev/null: not a regular file

Je fais 3 connexions différentes au serveur distant

touch deleteme
grep -rl oldstr path | xargs sed -i 's/oldstr/newstr/g' ./deleteme
rm deleteme

Bien que cela soit moins élégant et nécessite 2 connexions supplémentaires au serveur (il existe peut-être un moyen de tout faire en une seule ligne), il fait également le travail efficacement


Linux
  1. Utilisation de sed pour rechercher et remplacer des fichiers texte sous Linux

  2. Utilisation des commandes Sed, ex et perl pour rechercher et remplacer un texte sous Linux

  3. Recherche de fichiers exécutables à l'aide de ls et grep

  4. Rechercher et remplacer dans les scripts shell

  5. Rechercher et remplacer du texte dans un fichier entre une plage de lignes à l'aide de sed

Comment trouver une chaîne dans un fichier sous Linux

Comment utiliser la commande SED pour rechercher et remplacer une chaîne dans des fichiers

Comment rechercher et remplacer du texte, un mot ou une chaîne dans un fichier

Rechercher du texte dans des fichiers sous Linux à l'aide de grep

Tutoriel Unix Sed :Rechercher et remplacer du texte dans un fichier à l'aide de RegEx

Comment utiliser Sed pour rechercher et remplacer une chaîne dans un fichier