19:55
のファイルをgrep
して、Line 1,2,3,4,5を取得するにはどうすればよいですか?
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
あなたが欲しい:
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.
いくつかのawk
バージョン。
awk '/19:55/{c=5} c-->0'
awk '/19:55/{c=5} c && c--'
パターンが見つかったら、c=5
を設定しますc
がtrueの場合、c
の数を出力して減らします
Sedソリューションは次のとおりです。
sed '/19:55/{
N
N
N
N
N
s/\n/ /g
}' file.txt