wyszukiwanie grep + następny wiersz


18

Za pomocą greppolecenia znalazłem potrzebny tekst w następujący sposób:

grep 'C02' ~/temp/log.txt Teraz, gdziekolwiek znajdę pożądany ciąg, chciałbym wydrukować wiersz po znalezionym ciągu.

Na przykład powiedzmy, że pożądanym tekstem jest „abc”, a abc znajduje się w linii 12, chciałbym również wydrukować linię 13.


3
grep -A1 'abc' ~/temp/log.txtdla 1 linii kontekstu Po meczu - patrz Context Line Controlpodrozdział instrukcji ( man grep)
steeldriver,

1
gnu grep ułatwia; posix nie określa flagi -A
Jeff Schaller

1
cześć i witaj w Stack Exchange! na SE oczekuje się, że przeprowadzisz podstawowe badania, zanim przyjdziesz tu po pomoc. na przykład wyszukiwanie „grep show next line” zwróciło odpowiedź pośrednią w pierwszym wyniku i odpowiedź bezpośrednią w drugim. co zrobiłeś, aby już spróbować rozwiązać ten problem?
strugee

Odpowiedzi:


25

Jeśli używasz systemu Linux, możesz spróbować:

grep -A1 "C02" ~/temp/log.txt


OPTIONS
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing -- between contiguous groups of matches.
       -B NUM, --before-context=NUM
              Print NUM lines of leading context before matching lines.  Places a line containing -- between contiguous groups of matches.
       -C NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing -- between contiguous groups of matches.

Możesz użyć awk również jako:

awk '/C02/{print;getline;print}' ~/temp/log.txt

1
równieżsed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.