
我有一個命令來替換文件中的不可列印字符和單引號,但執行起來需要更多時間,因為我正在為多個文件替換這些字符,並且文件大小約為 30GB。
LANG=iso-8859-1 sed -i 's/[^[:print:]]//g;s/'\''//g;s/'//g' $path/EID*_$1.xml
和傳遞參數$path
。$1
如何讓進程運作得更快?我聽說tr
命令比 更快,sed
但我如何tr
在我的情況下使用該命令。 (tr
所有文件的單行命令)。
我嘗試了這個命令:
LANG=iso-8859-1 sed 's/[^[:print:]]//g;s/'\''//g;s/'//g' < $path/EID123_$1.xml > $path/EID123_$1_new.xml
mv -f $path/EID123_$1_new.xml EID123_$1.xml
LANG=iso-8859-1 sed 's/[^[:print:]]//g;s/'\''//g;s/'//g' < $path/EID456_$1.xml > $path/EID456_$1_new.xml;
mv -f $path/EID456_$1_new.xml EID456_$1.xml
對於每個沒有 i 選項的單一文件,但它沒有給出預期的結果,我仍然可以看到文件中的不可列印字元。
答案1
輸入二進位文件富,對於任何不可列印的字符(或某種空格),用空格替換該字符,並將輸出發送到管道,其中另一個t將單引號替換為空格,然後輸出到酒吧。
tr --complement '[:print:]' ' ' < foo | tr "'" ' ' > bar