GNU/Linux >> Tutoriales Linux >  >> Linux

¿Eliminar línea que contiene cierta cadena y la siguiente línea?

Yo uso esto

cat foo.txt | sed '/bar/d'

para eliminar líneas que contienen la cadena bar en el archivo.

Sin embargo, me gustaría eliminar esas líneas y la línea directamente después . Preferiblemente en sed , awk u otra herramienta que esté disponible en MinGW32.

Es una especie de inversión de lo que puedo obtener en grep con -A y -B para imprimir líneas coincidentes, así como líneas antes/después de la línea coincidente.

¿Hay alguna manera fácil de lograrlo?

Respuesta aceptada:

Si tiene GNU sed (por lo tanto, Linux o Cygwin no integrados):

sed '/bar/,+1 d'

Si tienes bar en dos líneas consecutivas, esto eliminará la segunda línea sin analizarla. Por ejemplo, si tiene un archivo de 3 líneas bar /bar /foo , el foo la línea permanecerá.


Linux
  1. Aprende a usar el editor de texto Sed

  2. ¿Comando rápido de Unix para mostrar líneas específicas en medio de un archivo?

  3. ¿Cómo usar sed para eliminar solo líneas dobles vacías?

  4. El concepto de 'Espacio de espera' y 'Espacio de patrón' en sed

  5. Linux:grep desde ciertas líneas hasta el final del archivo

El comando Sed de Linux:uso y ejemplos

Cómo quitar líneas de un archivo usando el comando Sed

Tutorial de Unix Sed:Impresión de líneas de archivos usando direcciones y patrones

Tutorial de Unix Sed:anexar, insertar, reemplazar y contar líneas de archivos

encuentra el texto coincidente y reemplaza la siguiente línea

sed - insertar línea después de X líneas después del partido