GNU/Linux >> Znalost Linux >  >> Linux

Odstranit řádek obsahující určitý řetězec a následující řádek?

Používám toto

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

pro odstranění řádků obsahujících řetězec bar v souboru.

Chtěl bych však odstranit tyto řádky a řádek přímo za ním . Nejlépe v sed , awk nebo jiný nástroj, který je dostupný v MinGW32.

Je to jakýsi opak toho, co mohu získat v grep s -A a -B pro tisk odpovídajících řádků i řádků před/za odpovídajícím řádkem.

Existuje nějaký snadný způsob, jak toho dosáhnout?

Přijatá odpověď:

Pokud máte GNU sed (takže neembedded Linux nebo Cygwin):

sed '/bar/,+1 d'

Pokud máte bar na dvou po sobě jdoucích řádcích tím smažete druhý řádek bez jeho analýzy. Například pokud máte 3řádkový soubor bar /bar /foo , foo linka zůstane.


Linux
  1. Naučte se používat textový editor Sed

  2. Manipulace s textem na příkazovém řádku pomocí sed

  3. Vrátit pouze odpovídající řetězec v Sed?

  1. Jak pomocí příkazu Linux „cat“ zobrazit pouze určité řádky podle čísla?

  2. Sed na Osx vložce na určitém řádku?

  3. Rychlý unixový příkaz pro zobrazení konkrétních řádků uprostřed souboru?

  1. Jak použít sed k odstranění pouze dvojitých prázdných řádků?

  2. najít odpovídající text a nahradit další řádek

  3. Linux - grep od určitých řádků až do konce souboru