Comando Sed para mejorar el rendimiento o comando tr para el mismo

Comando Sed para mejorar el rendimiento o comando tr para el mismo

Tengo un comando para reemplazar los caracteres no imprimibles y las comillas simples de un archivo, pero su ejecución lleva más tiempo ya que estoy reemplazando estos caracteres para varios archivos y el tamaño de los archivos es de alrededor de 30 GB.

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

El $pathy $1pasando por los parámetros. ¿Cómo puedo hacer que el proceso se ejecute más rápido? ¿Hay algún otro comando que pueda usar? Escuché que trel comando es más rápido en comparación, sedpero ¿cómo puedo usarlo tren mi situación? ( trcomando en una sola línea para todos los archivos).

Probé este comando:

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 

para cada archivo individual sin la opción i, pero no da el resultado esperado y aún puedo ver los caracteres no imprimibles en el archivo.

Respuesta1

Archivo binario de entradafoo, y para cualquier carácter que no sea imprimible (o algún tipo de espacio), reemplace ese carácter con un espacio y envíe la salida a la tubería, donde otrotrreemplaza las comillas simples con espacios, luego envía eso abar.

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

información relacionada