ファイルから特定の行と周囲の行を削除する方法は? [コピー]

ファイルから特定の行と周囲の行を削除する方法は? [コピー]

tcpdumpファイルがあります。

特定のパケットを破棄したい。持っているので簡単に発見できます。

0x0000: a6a6 a6a6 a6a6 a6a6 ........

データの最初の行として

パケット全体は次のとおりです(比較する)良い:

16:24:46.132673 00:35:1a:71:91:37 (oui Unknown) > 05:05:05:c5:05:05 (oui Unknown), ethertype Unknown (0x88be), length 60: 
    0x0000:  a6a6 a6a6 a6a6 a6a6 0101 2400 00b4 b83e
    0x0010:  931f 00be 7c80 545a 0202 0000 0000 00a5
    0x0020:  a5a5 a500 0000 0000 0000 0000 0000

それで私が言いたいことはこうです。

「このパターンを含む行、パターンの前の行、パターンの後の2行を削除してください。」

sed、awk、grep どちらも大丈夫です。例えば

$ sed -i 'magic' file

魔法に代わるアイデアはありますか?

ベストアンサー1

結果はvimを使う'、詳細は次のとおりです。

逆方向にgrepして「前」および「後」の行を除外する方法

$ vim -Nes "+g/a6a6\ a6a6/.-1,.+2d" '+w !tee' '+q!' file >newfile

おすすめ記事