2011-04-18 90 views
1

我有一个文件,以一些文本行开头,并继续许多二进制行。我需要从其开始删除文本行以获取纯二进制内容。假设二进制部分以特殊字词开头,如:连接。我尝试使用sed的bash脚本来执行此操作,以删除所有这些文本行。问题是:包含/字符的文本行导致sed将输入中的字符/解释为单独的命令。我的代码是这样的:如何在BASH中替换或删除包含/字符的行?

while read line 
    do 
     sed -i "/"$line"/d" file_name 

     if [ "$line" != Connection* ] 
       break; 

    done < file_name 

这样,当变量 “线” 包含/字符(例如CSS/JJ)的sed返回一个错误:

的sed:-e表达#1,字符6:未知命令:'j'

如何将包含/字符的变量传递给sed以删除相关行? 顺便说一下,有没有办法将二进制内容与文件中的文本分开?有时我的文件在二进制部分的开头没有任何特殊字词或符号来识别它。

回答

0

您可以安全地用任何其他字符替换/分隔符,前提是您在任何情况下都将其替换,有时,我使用的§在大多数文本中都很少见。

+1

感谢您的回答,但正如我在sed教程中使用其他分隔符阅读可能只是为了替换(与国旗s),并不可能删除。幸运的是,我可以通过“最重要的”工具解决从文件中提取二进制内容的问题(实际上是从tcpflow获取的tcp流文件),然后自定义其配置。 – Setareh 2011-04-20 04:25:11

+0

你是对与错。形式为'/.../'的地址可以改为'\ c ... c',其中'c'是任何字符。当使用命令'/.../.../'时,分隔符可以像'sc ... c ... c'那样改变,其中'c'是任何字符。 – potong 2012-01-05 23:20:09

相关问题