Comando sed para melhoria de desempenho ou comando tr para o mesmo

Comando sed para melhoria de desempenho ou comando tr para o mesmo

Eu tenho um comando para substituir os caracteres não imprimíveis e aspas simples de um arquivo, mas está demorando mais para ser executado, pois estou substituindo esses caracteres por vários arquivos e o tamanho dos arquivos é de cerca de 30 GB.

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

O $pathe $1passando por parâmetros. Como posso acelerar o processo e há algum outro comando que eu possa usar? Ouvi dizer trque o comando é mais rápido em comparação, sedmas como posso usar o trcomando na minha situação. ( trcomando em linha única para todos os arquivos).

Eu tentei 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 arquivo único sem a opção i, mas não está dando o resultado esperado e ainda consigo ver os caracteres não imprimíveis no arquivo.

Responder1

Arquivo binário de entradafoo, e para qualquer caractere que não possa ser impresso (ou algum tipo de espaço), substitua esse char por um espaço e envie a saída para o pipe, onde outrotrsubstitui aspas simples por espaços e, em seguida, gera isso parabar.

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

informação relacionada