2つの非常に大きなアセンブリダンプでdiff
のコマンドを実行しています。私はこのような出力の多くを参照してください。Grep:行に不要な文字列が含まれている場合、前後の行を除外する方法は?
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
は、私は本当に「ペンティアム4」または「一般的なX86のCPU」を含む行を表示したくありません。具体的には、 "Pentium 4"を含む行がある場合、その行とその上の3行を除外したい。
grep
を使用してこれを行うことはできますか?私はgrep -v 'Pentium 4'
について知っていますが、これは1行でしか動作しません。 grep -v -- '---'
を実行することはできません。なぜなら、トリプルダッシュを含む有効な差分があるからです。
grepのクエリは、上記のコードで実行した場合、結果は
1546c1546
< inc dword ptr [ebp-10H]
---
> add dword ptr [ebp-10H], 1
1552c1552
< inc esi
---
> add esi, 1
行は実際にコメントしていることを良いキャッチ!しかし、私は 'diff -I '^の利点を見ていない。 file1 file2'と入力します。 – hek2mgl
@ hek2mgl nevermind - 太い指が打ち込まれる前に入力してください...私は 'diff -I '^;' ...ビット、しかし私はあなたが私にそれを打つのを見る...そして、この特定のケースでは、 'diff -I'ルートは明らかに効率的であり、上記の場合には十分です。しかし、無視パターンを指定するのが簡単ではない複雑な状況があるかもしれないので、私は代替ツールとしてプロセス置換レシピを提案しました... – twalberg
:) diff {(cmd1) <(cmd2) 'は私の人生を変えました! (本当に) – hek2mgl