gpt4 book ai didi

linux - Grep:如果一行包含不需要的字符串,如何排除之前/之后的行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:29 24 4
gpt4 key购买 nike

我在 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

最佳答案

我喜欢这里的进程替换。假设 file_a 是:

; Emitting BLENDED_CODE for generic X86 CPU                                                                                                                                                          
inc dword ptr [ebp-10H]

file_b 是:

; Emitting BLENDED_CODE for Pentium 4
add dword ptr [ebp-10H], 1

运行

diff -I "^;" file_a file_b

将返回:

1,2c1,2
< ; Emitting BLENDED_CODE for generic X86 CPU
< inc dword ptr [ebp-10H]
---
> ; Emitting BLENDED_CODE for Pentium 4
> add dword ptr [ebp-10H], 1

我猜这不是您想要的。但是,当您尝试使用流程替换时,即

diff <(grep -v '^;' file_a) <(grep -v '^;' file_b)

你会得到:

1c1
< inc dword ptr [ebp-10H]
---
> add dword ptr [ebp-10H], 1

关于linux - Grep:如果一行包含不需要的字符串,如何排除之前/之后的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39002534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com