You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用grep筛选出mykey后未跟随nice comment的内容?

实现方法

你的需求完全可以实现,之前的命令出错是因为grep -v只会单独过滤掉包含nice comment的行,但没法关联mykey和它对应的评论块,导致结果混乱。下面提供两种可靠的解决办法:

方法一:用awk处理(推荐)

awk可以按自定义分隔符分割文本块,正好适配你用...分隔每个mykey组的结构。执行以下命令:

awk 'BEGIN{RS="\\.\\.\\."} /mykey/ && !/nice comment/{print $0 "\n"}' 你的文件名

原理:

  • BEGIN{RS="\\.\\.\\."}:把...设置为记录分隔符,每个mykey及其对应评论、换行就被当作一个独立的“块”
  • /mykey/ && !/nice comment/:只筛选包含mykey但不包含nice comment的块
  • print $0 "\n":输出符合条件的块并添加换行分隔,和你期望的格式一致

方法二:用grep上下文选项

如果每个mykey和对应评论的行数固定(比如mykey后第1行就是评论),可以用grep的上下文参数关联行:

grep -A 1 'mykey' 你的文件名 | grep -v -A 1 -B 0 'nice comment'

原理:

  • grep -A 1 'mykey':提取每个mykey行以及它后面1行的内容
  • grep -v -A 1 -B 0 'nice comment':过滤掉包含nice comment的行,以及它后面1行的内容(也就是整个mykey+nice comment的组)

两种方法都能得到你期望的输出:

mykey
not bad comment

mykey
excellent comment

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:05:34