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.

Mah
źródło
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
Kamaraj
źródło
1
równieżsed -n '/C02/{N; p}' ~/temp/log.txt
Sundeep