如何从文件中删除某些行和周围的行?

如何从文件中删除某些行和周围的行?

我有一个 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

那么我想说的是:

“删除包含此模式的行、模式之前的行以及模式之后的两行”。

sed 或 awk 或 grep 都不错,例如

$ sed -i 'magic' file

有什么想法可以代替魔法吗?

答案1

结果答案是'使用 vim',这里有详细信息:

如何 grep 反向匹配并排除“之前”和“之后”行

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

相关内容