다음과 같은 줄이 있습니다.
some.com *.some.com
키보드 화살표를 움직일 때 한 번만 움직이면 끝으로 이동하기 때문에 공백이 탭 공백인 것처럼 보입니다(여러 공백을 사용하려면 키보드 화살표를 여러 번 움직여야 하므로 공백이 여러 개 있는 것처럼 보이지 않습니다).
이 공간은 나에게 문제를 일으킨다. 다음을 수행해야 합니다.
그것이 무엇인지 찾아보세요.
단일 공백으로 대체하십시오.
어떻게 해야 하나요? 공백을 여러 개 제거해 보았지만 단일 문자를 제거할 수 없는 것 같습니다.
편집하다:
추가 정보입니다. 이 줄을 사용하는 프로그램은 다음과 같은 불만을 표시합니다.Invalid control character
답변1
탭 문자입니다.
tr -s '[:blank:]' ' ' <file >newfile
tr
이는 파일의 탭이나 공백을 단일 공백으로 바꾸는 데 사용됩니다 . 출력의 여러 공백이 단일 공백으로 압축됩니다. 결과는 에 기록됩니다 newfile
.
단일 탭 문자를 단일 공백으로 바꾸려면 다음을 사용하십시오.
tr '\t' ' ' <file >newfile
답변2
더 적은 수의 명령을 사용할 때 UNIX에서 특수 문자 표시
캐릭터가 무엇인지 확인하려면:
less -r sourcefile
또는
od -c sourceFile
좀 더 자세히 보려면.
unix-linux-sed-ascii-제어 코드-인쇄 불가능
sed
문제가 있는 제어 코드를 찾으 려면 :
sed 's/'`echo "\033"`'/ /g'
어디에 \033
실제로 존재하는 것으로 대체됩니다.
답변3
당신은 또한 이것을 사용하여 끝날 수 있습니다
sed -E "s,[[:space:]]+, ,g" /tmp/test
이는 단일 또는 다중 "공백"(공백, 탭)을 단일 "공백"으로 대체합니다.
$ cat /tmp/test
sdfsdfsdf sdfsdfsdfsd
sdflksjdf sdfélsdkfésldkf ss
결과
$ sed -E "s,[[:space:]]+, ,g" /tmp/test
sdfsdfsdf sdfsdfsdfsd
sdflksjdf sdfélsdkfésldkf ss