파일에서 인쇄할 수 없는 문자와 작은따옴표를 바꾸는 명령이 있는데, 여러 파일에 대해 이러한 문자를 바꾸고 파일 크기가 약 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/'//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