我有一個text file與unicode line separator(十六進制代碼2028)。刪除Bash中的Unicode行分隔符
我想使用bash刪除它(我看到implementations for Python,但不適用於此語言)。我可以使用什麼命令來轉換文本文件(output4.txt)以丟失unicode行分隔符?
請參閱下面的VIM:
我有一個text file與unicode line separator(十六進制代碼2028)。刪除Bash中的Unicode行分隔符
我想使用bash刪除它(我看到implementations for Python,但不適用於此語言)。我可以使用什麼命令來轉換文本文件(output4.txt)以丟失unicode行分隔符?
請參閱下面的VIM:
也許這tr命令也應該工作:
tr '\xE2\x80\xA8' ' ' <inFile> outFIle
工作液:感謝OP找到這個:
sed -i.old $'s/\xE2\x80\xA8/ /g' inFile
你或許可以用sed:
sed 's/\x20\x28//g' <file_in.txt >file_out.txt
覆蓋原文件:
sed -i 's/\x20\x28//g' file.txt
編輯:(見chepner的評論)你應該確保你有正確的字節,取決於編碼,然後使用sed刪除th EM。您可以使用例如od -t x1
查看十六進制轉儲並找出編碼。
2028 Unicode的代碼點;它在文件中的顯示方式取決於編碼。對於UTF-8,字節序列將是'\ xE2 \ x80 \ xA8'。 – chepner
我注意到在你的截圖中,你已經在vim中打開了文件,那爲什麼不在vim中做替換呢?
在vim你可以做
:%s/(seebelow)//g
的(seebelow)
部分,你可以輸入:
CTRL-Vü
不幸的是,我需要將它自動化 - 雖然這是一個非常有用的提示! –
如果你有一些數量的文件,vim也可以自動完成它。 (帶-w和-s)。但如果你有一大堆文件,shell是正確的路。 – Kent
唉,它似乎並不。 :/ –
你可以試試:'tr -d'\ x20 \ x28'
anubhava
這樣就結束了:'sed -i.old $'s/\ xE2 \ x80 \ xA8 // g'filename' - 漂亮接近你的。 :) –