不要将连续匹配的上下文与 grep 合并

2024-05-12

如果我跑grep -C 1 match在以下文件上:

a
b
match1
c
d
e
match2
f
match3
g

我得到以下输出:

b
match1
c
--
e
match2
f
match3
g

正如您所看到的,由于连续匹配“match2”和“match3”周围的上下文重叠,因此它们被合并。但是,我更愿意为每场比赛获取一个上下文描述,可能会从上下文报告中的输入中复制行。在这种情况下,我想要的是:

b
match1
c
--
e
match2
f
--
f
match3
g

实现这一目标的最佳方法是什么?我更喜欢足够通用的解决方案,可以轻松适应其他解决方案grep选项(不同的值-A, -B, -C,或完全不同的标志)。理想情况下,我希望有一种聪明的方法可以做到这一点grep....


我认为使用简单的 grep 不可能做到这一点。

下面的 sed 结构在某种程度上有效,现在我只需要弄清楚如何添加“--”分隔符

$ sed -n -e '/match/{x;1!p;g;$!N;p;D;}' -e h log
b
match1
c
e
match2
f
f
match3
g
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不要将连续匹配的上下文与 grep 合并 的相关文章

  • 如何按最新修改日期最后的时间顺序对“grep -l”的输出进行排序?

    我使用 grep 的 l 标志来打印匹配的文件名 然后我想按升序列出结果 文件 即最新的最后一个 明显地 grep l
  • 了解Grep的选项-H在不同情况下的实际使用

    这个问题是基于这个答案 https stackoverflow com questions 1121776 to understand xargs better 1121897 1121897 为什么两个命令得到相同的输出 命令A sudo
  • 在目录和子目录中搜索文件中的模式

    在Linux中 我想搜索给定目录及其子文件夹 文件以查找某些包含和排除模式 find apps exec grep performance v warn dev null 这与搜索所经过的大量行相呼应 我不想这样 我想找到包含性能但不包含警
  • 错误:“grep:参数列表太长”[重复]

    这个问题在这里已经有答案了 我正在尝试运行以下命令 但出现参数太长错误 你能帮我吗 HOST grep rl pattern home public html bash bin grep Argument list too long 有没有
  • Python:当我使用 grep 时出现 UnicodeEncodeError

    我正在使用一个简单的 python 脚本来获取我的 CID 的预订结果 simple py data minorRev current minorRev cid xxx apiKey xxx customerIpAddress creati
  • 如何对多种文件类型使用 grep --include 选项?

    当我想 grep 某个目录中的所有 html 文件时 我执行以下操作 grep include html pattern R some path 效果很好 问题是如何grep某个目录中的所有html htm php文件 由此使用 grep
  • 如何为 docker 容器的日志着色

    我有一个容器 有时在日志中写入对我来说很重要的关键字 我想在终端中以颜色突出显示该单词 但同样重要的是仍然实时查看所有内容日志 follow 我刚刚尝试过命令 docker logs f my app tail 100 grep color
  • Linux 文件权限的正则表达式(数字表示法)

    我一生都无法找出正确的正则表达式 我正在寻找的是一个正则表达式来匹配 Linux 文件权限的有效数字表示 例如 740 表示全部读取无 777 表示全部全部 到目前为止 我已经尝试过以下操作 strtotest 740 echo strto
  • Solaris 9 上的 grep 命令

    我在 Solaris 9 上遇到 grep 命令的奇怪行为 例如 我有一个包含两行的主机文件 1 1 1 1 主机 1 2 3 4 主机 MY 我想 grep 仅包含主机字符串的行 而不是包含主机 MY 的其他行 我用 grep Fxq 主
  • 更改grep命令的分隔符

    我在用grep检测 a href xxxx something here a 当链接在输入中分成两行时 这不起作用 我想 grep 检查直到它检测到但现在它只是将输入输入到 grep 中 直到检测到新行为止 所以如果输入是这样的 a hre
  • 如何在Mac终端中找到带有“top”的特定进程

    我试过了top grep skype例如 但它不起作用 我正在尝试按名称查找特定进程 使用这个代替 ps ax grep i skype
  • 使用 ls 和 grep 列出具有特定扩展名的文件

    我只想从当前目录获取文件 并且只输出 mp4 mp3 exe 文件 没有其他内容 所以我想我可以这样做 ls grep mp4 grep mp3 grep exe 但不会 因为第一个 grep 将仅输出 mp4 因此其他 2 个 grep
  • 使用 OpenCV 改进特征点匹配

    我想匹配立体图像中的特征点 我已经用不同的算法找到并提取了特征点 现在我需要一个良好的匹配 在本例中 我使用 FAST 算法进行检测和提取 BruteForceMatcher用于匹配特征点 匹配代码 vector lt vector
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • 在退出脚本之前等待后台进程完成

    在退出脚本 TCL Bash 之前 如何确保所有后台进程已完成执行 我正在考虑将所有后台进程 pid 写入 pid 文件 然后最后 pgrep pidfile 以查看在退出之前是否有任何进程仍在运行 有一些更简单的方法可以做到这一点吗 TC
  • 使用 sed 和 grep/egrep 进行搜索和替换

    我在用egrep R后跟包含大约 10 个并集的正则表达式 如下所示 jpg png gif等等 这很好用 现在我想替换所有找到的字符串 bmp 我在想类似的事情 egrep lR jpg png gif sed s some expres
  • 如何在文件夹中的 xml 文件中 grep 一个单词

    我知道我可以使用 grep 在这样的文件夹中的所有文件中查找单词 grep rn core 但我当前的目录有很多子目录 我只想搜索当前目录及其所有子目录中存在的所有 xml 文件 我怎样才能做到这一点 我试过这个 grep rn core
  • Android - 框架布局高度与协调器布局不匹配

    我的 FrameLayout 抽屉布局中的容器 有问题 FrameLayout的高度超过了屏幕高度 在底部的android默认菜单按钮下方
  • Grep 模式匹配用双引号括起来的小写字符串

    我在 grep 方面遇到了一些问题 我似乎无法弄清楚 我试图在一组源文件中搜索用双引号 C 字符串 括起来的小写单词的所有实例 使用 bash 和 gnu grep grep e a z cpp 没有给我任何匹配项 而 grep e a z
  • 使用 grep 进行多种搜索模式

    考虑我有以下数据流 BODY1 attrib1 someval11 attrib2 someval12 attrib3 someval13 BODY2 attrib1 someval21 attrib2 someval22 attrib3

随机推荐