
У меня есть команда для замены непечатаемых символов и одинарных кавычек в файле, но ее выполнение занимает больше времени, поскольку я заменяю эти символы в нескольких файлах, а размер файлов составляет около 30 ГБ.
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
Входной двоичный файлфу, а для любого символа, который не печатается (или какого-либо пробела), замените этот символ пробелом и отправьте вывод в канал, где другойтрзаменяет одинарные кавычки пробелами, а затем выводит это вбар.
tr --complement '[:print:]' ' ' < foo | tr "'" ' ' > bar