如何让 grep 打印每个匹配行下方和上方的行? [复制]
Posted
技术标签:
【中文标题】如何让 grep 打印每个匹配行下方和上方的行? [复制]【英文标题】:How can I make grep print the lines below and above each matching line? [duplicate] 【发布时间】:2010-11-07 13:01:27 【问题描述】:我必须解析一个非常大的文件,我想使用命令 grep(或任何其他工具)。
我想在每个日志行中搜索单词FAILED
,然后打印每个匹配行的上方和下方的行,以及匹配的行。
例如:
id : 15
Satus : SUCCESS
Message : no problem
id : 15
Satus : FAILED
Message : connection error
我需要打印:
id : 15
Satus : FAILED
Message : connection error
【问题讨论】:
【参考方案1】:grep 的-A 1
选项会在后面给你一行; -B 1
会先给你一行; -C 1
将两者结合起来,在前后都给你一行,-1
也是如此。
【讨论】:
+1,我忘了-C(上下文行) @StevenLu,但仅限于grep
期间,因此请准备一个长输入。
非常适合在 fasta 中搜索标题和获取序列(如果它是单线 fasta)
你是个巫师
我,每当我需要使用以下标志之一时,拍拍自己的后背:“-A
可以代表 'above' 或 'after' 而 -B
可以代表 'below' 或'before'。嗯……显然最合理的选择是 'above' 和 'below' 因为它们在屏幕上的显示方式是这样的,而且按字母顺序排列也很有意义。”【参考方案2】:
使用 -B、-A 或 -C 选项
grep --help
...
-B, --before-context=NUM print NUM lines of leading context
-A, --after-context=NUM print NUM lines of trailing context
-C, --context=NUM print NUM lines of output context
-NUM same as --context=NUM
...
【讨论】:
有趣的是这是grep --help | grep context
的输出【参考方案3】:
使用 -A 和 -B 开关(表示后行和前行):
grep -A 1 -B 1 FAILED file.txt
【讨论】:
以上是关于如何让 grep 打印每个匹配行下方和上方的行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Logging:显示匹配行上方和下方的行
如何在熊猫数据框中找到标准匹配上方和下方的x行,然后将它们保存为新的df?