用于提高性能的 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

相关内容