2011-04-18 56 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

相關問題