用於提高效能的 sed 指令或用於相同效能的 tr 指令

用於提高效能的 sed 指令或用於相同效能的 tr 指令

我有一個命令來替換文件中的不可列印字符和單引號,但執行起來需要更多時間,因為我正在為多個文件替換這些字符,並且文件大小約為 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/&apos;//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/&apos;//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

相關內容