0

我使用 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
4

3 回答 3

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
于 2013-06-25T07:54:48.653 回答
2
grep -C 1 abc123 input

从手册页:

-C NUM, -NUM, --context=NUM
           Print NUM lines of output context
于 2013-06-25T07:55:31.003 回答
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
于 2013-06-25T07:55:13.723 回答