GNU/Linux >> Tutoriels Linux >  >> Linux

trouver le texte correspondant et remplacer la ligne suivante

Aller simple :fichier d'exemple

$ cat file
Cygwin
Unix
Linux
Solaris
AIX

En utilisant sed, en remplaçant la ligne suivante après le motif 'Unix' par 'hi' :

$ sed '/Unix/{n;s/.*/hi/}' file
Cygwin
Unix
hi
Solaris
AIX

Pour votre question spécifique :

$ sed '/<key>ConnectionString<\/key>/{n;s/<string>.*<\/string>/<string>NEW STRING<\/string>/}' your_file
<key>ConnectionString</key>
<string>NEW STRING</string>

Cela pourrait fonctionner pour vous (GNU sed):

sed '/<key>ConnectionString<\/key>/!b;n;c<string>changed_value</string>' file

!b annule l'adresse précédente (regexp) et interrompt tout traitement, mettant fin aux commandes sed, n imprime la ligne courante puis lit la suivante dans l'espace du motif, c remplace la ligne actuelle par la chaîne qui suit la commande.


Ça marche. De plus, il est intéressant de mentionner que si vous écrivez,

sed '/<key>ConnectionString<\/key>/!b;n;n;c<string>changed_value</string>' file

Notez les deux n, il remplace après deux lignes et ainsi de suite.


Linux
  1. Éditeur Vi et Vim :12 exemples puissants de recherche et de remplacement

  2. Recherche et remplacement récursifs dans les fichiers texte sur Mac et Linux

  3. Comment remplacer une chaîne dans plusieurs fichiers en ligne de commande Linux

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

  5. remplacer la nième occurrence de chaîne dans chaque ligne d'un fichier texte

Comment utiliser sed pour rechercher et remplacer une chaîne dans des fichiers

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

Comment rechercher et remplacer du texte dans Vim

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