我想在某个文件中搜索特定的字符串。如果我找到了该字符串,我还想在该行之前(或之后)打印 X 行。
这可以与 grep 或 awk 一起使用,还是我需要组合?
我想有像这样,但与之前或一击,只有第十届毕竟尾随/主导线。
例如,如果我的输入如下所示:
line1 with a pattern
line2
line3
line4 with a pattern
line5
line6
line7 with a pattern
...
Run Code Online (Sandbox Code Playgroud)
例如,我想搜索“模式”一词并输出该行 + 之后 2 行的行,而不是直接跟在模式行之后的行。所以所需的输出是:
line1 with a pattern
line3
line4 with a pattern
line6
line7 with a pattern
...
Run Code Online (Sandbox Code Playgroud)
Mar*_*iae 16
grep会为你做这件事,有选项-A(之后)和-B(之前),和-C(上下文)。我经常使用的一个例子是:
sudo lspci -vnn | grep -i net -A 12
Run Code Online (Sandbox Code Playgroud)
因为这个命令会在匹配后显示 12 行,其中包括用于控制网络(-i net)卡的驱动程序。一般来说,命令是:
grep text_to_search -A n -B m file.extension
Run Code Online (Sandbox Code Playgroud)
这将输出m匹配前的n行和匹配后的行。或者你可以使用
grep text_to_search -C n file.extension
Run Code Online (Sandbox Code Playgroud)
显示n找到的文本周围的总行数(匹配前一半,匹配后一半)。
| 归档时间: |
|
| 查看次数: |
56326 次 |
| 最近记录: |