【发布时间】:2014-08-31 01:12:14
【问题描述】:
我需要在多次出现的文件中获取 X 到 Y,每次匹配一个出现时它都会保存到文件中。
这是一个示例文件(demo.txt):
\x00START how are you? END\x00
\x00START good thanks END\x00
sometimes random things\x00\x00 inbetween it (ignore this text)
\x00START thats nice END\x00
现在运行命令后,每个文件(/folder/demo1.txt、/folder/demo2.txt 等)除了 'START ' 但不是 'END'。
/folder/demo1.txt 应该说“开始你好吗?”,/folder/demo2.txt 应该说“开始很好,谢谢”。
所以基本上它应该管道“你好吗?”并使用 'echo' 我可以添加 'START'。
值得记住的是,我正在处理一个非常大的二进制文件。
我正在使用
sed -n -e '/\x00START/,/END\x00/ p' demo.txt > demo1.txt
但这并没有按预期工作(它在 '\x00START' 之前获取行,并且不会在第一个 'END\x00' 处停止)。
【问题讨论】:
-
仅供参考,我认为
sed通常不能很好地处理二进制文件... -
啊,知道我还能用什么吗?我尝试了 grep,但这也不适用于二进制文件。
-
这是什么文件?为什么里面有那些空字符?无论如何,二进制模式使用
-b选项(在*nix 上无关紧要),并使用\x00匹配空字符。
标签: regex shell command-line sed