Sed comando para melhoria de desempenho ou comando tr para o mesmo

0

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

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

Os parâmetros de passagem $path e $1 . Como posso fazer o processo rodar mais rápido e existe algum outro comando que eu possa usar? Ouvi o comando tr é mais rápido que o sed , mas como posso usar o comando tr na minha situação. ( tr comando 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 posso ver os caracteres não imprimíveis no arquivo.

    
por Azhar 11.02.2016 / 15:35

1 resposta

0

Insira o arquivo binário foo e, para qualquer caractere que não seja imprimível (ou algum tipo de espaço), substitua esse caractere por um espaço e envie a saída para pipe, onde outro tr substitui aspas simples por espaços e, em seguida, gera a saída para a barra .

tr --complement '[:print:]'  ' ' < foo | tr "'"  ' ' > bar
    
por 13.04.2016 / 02:25