【发布时间】:2016-08-17 17:06:49
【问题描述】:
我在 2 个非常大的程序集转储上运行带有 diff 的命令。我看到很多这样的输出:
903c903
< ; Emitting BLENDED_CODE for generic X86 CPU
---
> ; Emitting BLENDED_CODE for Pentium 4
995c995
< ; Emitting BLENDED_CODE for generic X86 CPU
---
> ; Emitting BLENDED_CODE for Pentium 4
1123c1123
< ; Emitting BLENDED_CODE for generic X86 CPU
---
> ; Emitting BLENDED_CODE for Pentium 4
1191c1191
< ; Emitting BLENDED_CODE for generic X86 CPU
---
> ; Emitting BLENDED_CODE for Pentium 4
1278c1278
< ; Emitting BLENDED_CODE for generic X86 CPU
---
> ; Emitting BLENDED_CODE for Pentium 4
1347c1347
< ; Emitting BLENDED_CODE for generic X86 CPU
---
> ; Emitting BLENDED_CODE for Pentium 4
1546c1546
< inc dword ptr [ebp-10H]
---
> add dword ptr [ebp-10H], 1
1552c1552
< inc esi
---
> add esi, 1
我真的不想看到包含“Pentium 4”或“generic X86 CPU”的行;具体来说,如果有一行包含“Pentium 4”,我想排除该行及其上方的 3 行。
是否可以使用grep 做到这一点?我知道grep -v 'Pentium 4',但这仅适用于单行。 grep -v -- '---' 显然我做不到,因为有一些包含三连字符的有效差异。
如果在上面的代码上运行了 grep 查询,结果应该是
1546c1546
< inc dword ptr [ebp-10H]
---
> add dword ptr [ebp-10H], 1
1552c1552
< inc esi
---
> add esi, 1
【问题讨论】:
标签: linux bash shell unix grep