切割文件的相关部分

我想从一个特定的模式开始,并以特定的模式结束的二进制文件的一些部分。如何在Linux中使用bash来做到这一点。可以使用sedawk来完成?

我有一个像下面给出的文件。

bd = 0x422e90e0ff4abc00 pad = 0x82 offset = 0x05 dst = 00:0d:bc:03:6d:80 src = 00:50:a2:df:e8:1c etype = 0x0800 ip:version = 4 headerwords = 5 tos = 32 length = 142 ip:id = 201 flags = 0x2 fragmentoffset = 0 ip:ttl = 117 protocol = 6 checksum = 0x0000 ip:sourceaddress = 36.190.253.236 ip:destinaddress = 125.182.162.162 bd = 0x422e90e0ff61f000 pad = 0x92 offset = 0x19 dst = 00 :50:a2:df:e8:1c src = 00:0d:bc:03:6d:80 etype = 0x0800 ip:version = 4 headerwords = 5 tos = 0 length = 40 ip:id = 11084 flags = 0x2 fragmentoffset = 0 ip:ttl = 62 protocol = 6 checksum = 0x0000 ip:sourceaddress = 125.182.162.162 ip:destinaddress = 36.190.253.236 bd = 0x422e90e0ff6bb900 pad = 0xb8 offset = 0x06 dst = 00:50:a2:df:e8:1c src = 00:0d:bc:03:6d:80 etype = 0x0800 ip:version = 4 headerwords = 5 tos = 0 length = 40 ip:id = 15720 flags = 0x2 fragmentoffset = 0 ip:ttl = 62 protocol = 6 checksum = 0x0000 ip:sourceaddress = 125.182.162.162 ip:destinaddress = 36.190.253.236 bd = 0x422e90e0ffbe9a00 pad = 0xbb offset = 0xc5 dst = 00:50:a2:df:e8:1c src = 00:0d:bc:03:6d:80 etype = 0x0800 ip:version = 4 headerwords = 5 tos = 0 length = 186 ip:id = 15722 flags = 0x2 fragmentoffset = 0 ip:ttl = 62 protocol = 6 checksum = 0x0000 ip:sourceaddress = 125.182.162.162 ip:destinaddress = 36.190.253.236

我需要把这个文件从bd = 0x422e90e0ff61f000剪切到bd = 0x422e90e0ffbe9a00。可以用sed或awk来完成。

像这样的东西? (我把你的文本块放在文件foo.txt

 $ cat foo.awk BEGIN { RS = "bd=[a-fx0-9]* "; FS = ""; } { print $0; } $ awk -f foo.awk foo.txt pad=0x82 offset=0x05 dst=00:0d:bc:03:6d:80 src=00:50:a2:df:e8:1c etype=0x0800 ip: version=4 headerwords=5 tos=32 length=142 ip: id=201 flags=0x2 fragmentoffset=0 ip: ttl=117 protocol=6 checksum=0x0000 ip: sourceaddress=36.190.253.236 ip: destinaddress=125.182.162.162 pad=0x92 offset=0x19 dst=00:50:a2:df:e8:1c src=00:0d:bc:03:6d:80 etype=0x0800 ip: version=4 headerwords=5 tos=0 length=40 ip: id=11084 flags=0x2 fragmentoffset=0 ip: ttl=62 protocol=6 checksum=0x0000 ip: sourceaddress=125.182.162.162 ip: destinaddress=36.190.253.236 pad=0xb8 offset=0x06 dst=00:50:a2:df:e8:1c src=00:0d:bc:03:6d:80 etype=0x0800 ip: version=4 headerwords=5 tos=0 length=40 ip: id=15720 flags=0x2 fragmentoffset=0 ip: ttl=62 protocol=6 checksum=0x0000 ip: sourceaddress=125.182.162.162 ip: destinaddress=36.190.253.236 pad=0xbb offset=0xc5 dst=00:50:a2:df:e8:1c src=00:0d:bc:03:6d:80 etype=0x0800 ip: version=4 headerwords=5 tos=0 length=186 ip: id=15722 flags=0x2 fragmentoffset=0 ip: ttl=62 protocol=6 checksum=0x0000 ip: sourceaddress=125.182.162.162 ip: destinaddress=36.190.253.236 

所以,基本上:将字段分隔符更改为空,并将logging分隔符更改为该“bd =”模式,并打印logging中的所有内容。