Chci zobrazit všechny řádky před zápasem, nejen například 10 nebo 7 nebo 14, jak je vysvětleno v části Jak mohu načíst řádky před/po výsledku grep v bash?.
Jak to mohu udělat? Nezáleží na tom, zda je odpovídající řádek zahrnut nebo ne.
Například místo:
... | grep -B 10 -- "foo"
Chci:
... | grep -B -- "foo"
Ale tento poslední kód nefunguje.
Přijatá odpověď:
-
Včetně zápasu,
sed '/foo/q' fileJe lepší q použijte
sedjakmile je nalezena shoda, jinaksedby pokračoval ve čtení souboru a ztrácel čas, což by bylo značné u velkých souborů. -
S výjimkou zápasu,
sed -n '/foo/q;p' file-npříznak znamená, že pouze řádky, které dosáhnouppříkaz bude vytištěn. Protožefoořádek spouštíquit akce, nedosahujepa proto se nevytiskne.-
Pokud váš
sedje GNU, lze to zjednodušit nased '/foo/Q' file
-
Odkazy
/foo/— Adresyq,p— Často používané příkazyQ— Rozšířené příkazy GNU Sed-n— Možnosti příkazového řádku