从文件中获取上一行和后一行

时间:2013-06-25 07:52:09

标签: unix grep

我使用grep查找包含搜索字符的行。除了那条线,我想要前一行以及后一行。

For example

cat test.csv

bbbbbbbbbbbbb
xxx234.123yyy
abc123.456efg
zzz789.222xxx
aaaaaaaaaaaaa

grep '123.456' test.csv

I get a line say,
abc123.456efg

Addition to that I need like this

xxx234.123yyy
abc123.456efg
zzz789.222xxx

3 个答案:

答案 0 :(得分:2)

您可以使用-A-B选项:

% grep -A1 -B1 '123.456' test.csv
xxx234.123yyy
abc123.456efg
zzz789.222xxx

这会打印一行前导上下文和一行尾随上下文。

作为一种快捷方式,grep还提供了-C-A组合的-B选项:

% grep -C1 '123.456' test.csv
xxx234.123yyy
abc123.456efg
zzz789.222xxx

答案 1 :(得分:2)

grep -C 1 abc123 input

来自man-page:

-C NUM, -NUM, --context=NUM
           Print NUM lines of output context

答案 2 :(得分:1)

这是-C标志设计用于

的地方
$ cat file
bbbbbbbbbbbbb
xxx234.123yyy
abc123.456efg
zzz789.222xxx
aaaaaaaaaaaaa
$ grep 123.456 file
abc123.456efg
$ grep -C1 123.456 file
xxx234.123yyy
abc123.456efg
zzz789.222xxx