GNU/Linux >> Linux Esercitazione >  >> Linux

Rimuovere la riga contenente una determinata stringa e la riga seguente?

Io uso questo

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

per rimuovere le righe contenenti la stringa bar nel file.

Vorrei tuttavia rimuovere quelle righe e la riga subito dopo . Preferibilmente in sed , awk o altro strumento disponibile in MinGW32.

È una specie di rovescio di quello che posso ottenere in grep con -A e -B per stampare le righe corrispondenti così come le righe prima/dopo la riga abbinata.

C'è un modo semplice per ottenerlo?

Risposta accettata:

Se hai GNU sed (quindi Linux o Cygwin non embedded):

sed '/bar/,+1 d'

Se hai bar su due righe consecutive, questo cancellerà la seconda riga senza analizzarla. Ad esempio, se hai un file di 3 righe bar /bar /foo , il foo la linea rimarrà.


Linux
  1. Impara a usare l'editor di testo Sed

  2. Con il comando "cat" di Linux, come mostrare solo determinate righe per numero?

  3. Sed rimuove i caratteri dalla nuova riga?

  4. Sed On Osx inserisce a una certa linea?

  5. Linux:grep da determinate righe alla fine del file

Come rimuovere le righe da un file usando il comando Sed

Restituisci solo la stringa abbinata in Sed?

Sed:inserire testo dopo l'ennesimo carattere che precede/segue una determinata stringa?

Esercitazione Unix Sed:stampa di righe di file utilizzando l'indirizzo e i modelli

Tutorial Unix Sed:aggiungi, inserisci, sostituisci e conta righe di file

sed - inserisce riga dopo X righe dopo la corrispondenza