GNU/Linux >> Tutoriales Linux >  >> Linux

encuentra el texto coincidente y reemplaza la siguiente línea

Unidireccional:archivo de muestra

$ cat file
Cygwin
Unix
Linux
Solaris
AIX

Usando sed, reemplazando la siguiente línea después del patrón 'Unix' con 'hola':

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

Para su pregunta específica:

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

Esto podría funcionar para usted (GNU sed):

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

!b niega la dirección anterior (regexp) y sale de cualquier procesamiento, finalizando los comandos sed, n imprime la línea actual y luego lee la siguiente en el espacio del patrón, c cambia la línea actual a la cadena que sigue al comando.


Funciona. Adicionalmente me interesa mencionar que si escribes,

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

Tenga en cuenta las dos n, se reemplaza después de dos líneas y así sucesivamente.


Linux
  1. ¿Cómo se reemplaza el texto similar a sed con python?

  2. Usando grep y sed para encontrar y reemplazar una cadena

  3. Buscar y reemplazar en secuencias de comandos de shell

  4. Encuentre y reemplace texto en un archivo entre un rango de líneas usando sed

  5. Reemplazo de sed multilínea

Cómo usar sed para buscar y reemplazar cadenas en archivos

Cómo usar el comando SED para buscar y reemplazar cadenas en archivos

Cómo buscar y reemplazar texto, palabra o cadena en un archivo

Cómo encontrar y reemplazar texto en Vim

Tutorial de Unix Sed:busque y reemplace texto dentro de un archivo usando RegEx

Cómo usar Sed para buscar y reemplazar una cadena en un archivo