성능 향상을 위한 sed 명령 또는 동일한 성능 향상을 위한 tr 명령

성능 향상을 위한 sed 명령 또는 동일한 성능 향상을 위한 tr 명령

파일에서 인쇄할 수 없는 문자와 작은따옴표를 바꾸는 명령이 있지만 여러 파일에 대해 이러한 문자를 바꾸고 파일 크기가 약 30GB이므로 실행하는 데 더 많은 시간이 걸립니다.

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/&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작은따옴표를 공백으로 바꾼 다음 이를 출력합니다.술집.

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

관련 정보