Acontece que a resposta é ' usar o vim ', e há detalhes aqui:
Como inverter o grep -conexa e exclui as linhas "antes" e "depois"
$ vim -Nes "+g/a6a6\ a6a6/.-1,.+2d" '+w !tee' '+q!' file >newfile
Eu tenho um arquivo tcpdump.
Eu quero remover certos pacotes. Eles são fáceis de detectar porque eles têm
0x0000: a6a6 a6a6 a6a6 a6a6 ........
como a primeira linha de dados.
O pacote completo parece ( mutatis mutandis ) como:
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
Então, o que eu gostaria de dizer é:
"Remover linhas que contenham este padrão e a linha antes do padrão e as duas linhas depois dela".
Sed, awk ou grep seriam bons, por exemplo.
$ sed -i 'magic' file
Alguma idéia do que acontece no lugar da mágica?
Acontece que a resposta é ' usar o vim ', e há detalhes aqui:
Como inverter o grep -conexa e exclui as linhas "antes" e "depois"
$ vim -Nes "+g/a6a6\ a6a6/.-1,.+2d" '+w !tee' '+q!' file >newfile