Команда sed для улучшения производительности или команда tr для того же самого

Команда sed для улучшения производительности или команда tr для того же самого

У меня есть команда для замены непечатаемых символов и одинарных кавычек в файле, но ее выполнение занимает больше времени, поскольку я заменяю эти символы в нескольких файлах, а размер файлов составляет около 30 ГБ.

LANG=iso-8859-1 sed -i 's/[^[:print:]]//g;s/'\''//g;s/'//g' $path/EID*_$1.xml

И прохождение через параметры. Как я могу ускорить процесс и есть ли другая команда, которую я могу использовать? Я слышал, что $pathкоманда быстрее по сравнению с, но как я могу использовать команду в моей ситуации. ( команда в одной строке для всех файлов).$1trsedtrtr

Я попробовал эту команду:

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

Входной двоичный файлфу, а для любого символа, который не печатается (или какого-либо пробела), замените этот символ пробелом и отправьте вывод в канал, где другойтрзаменяет одинарные кавычки пробелами, а затем выводит это вбар.

tr --complement '[:print:]'  ' ' < foo | tr "'"  ' ' > bar

Связанный контент