ファイルをgrepして次の5行を取得する方法


117

Line 1、2、3、4、5のgrepファイルを19:55取得するにはどうすればよいですか?

2013/10/08 19:55:27.471
Line 1
Line 2
Line 3
Line 4
Line 5

2013/10/08 19:55:29.566
Line 1
Line 2
Line 3
Line 4
Line 5

2
あなたのタイトルは素晴らしいようです。ご存知のとおり-いいえ、ファイルをgrepせずに5行にします:p
Alma Do

回答:


216

あなたが欲しい:

grep -A 5 '19:55' file

からman grep

Context Line Control

-A NUM, --after-context=NUM

Print NUM lines of trailing context after matching lines.  
Places a line containing a gup separator (described under --group-separator) 
between contiguous groups of matches.  With the -o or --only-matching
option, this has no effect and a warning is given.

-B NUM, --before-context=NUM

Print NUM lines of leading context before matching lines.  
Places a line containing a group separator (described under --group-separator) 
between contiguous groups of matches.  With the -o or --only-matching
option, this has no effect and a warning is given.

-C NUM, -NUM, --context=NUM

Print NUM lines of output context.  Places a line containing a group separator
(described under --group-separator) between contiguous groups of matches.  
With the -o or --only-matching option,  this  has  no effect and a warning
is given.

--group-separator=SEP

Use SEP as a group separator. By default SEP is double hyphen (--).

--no-group-separator

Use empty string as a group separator.

2
すごいすごいすごい。どうもありがとう。
PhillipMwaniki 2018

出力を特定の行数に制限せず、一致した行の後にすべての行を印刷する方法があったら、すばらしいでしょう。
Matthias Braun

4

一部のawkバージョン。

awk '/19:55/{c=5} c-->0'
awk '/19:55/{c=5} c && c--'

パターンが見つかっc=5
たら、If cをtrue に設定し、印刷して数を減らしますc


2

ここにsedソリューションがあります:

sed '/19:55/{
N
N
N
N
N
s/\n/ /g
}' file.txt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.