텍스트 파일에서 ^I 끝을 제거할 수 없습니다.

텍스트 파일에서 ^I 끝을 제거할 수 없습니다.

다음과 같이 끝나는 텍스트 파일이 있습니다.

line1^I$^M$
line2^I$^M$
line3^I$^M$

sed명령과 "dos2unix"를 사용하여 온라인에서 찾은 많은 옵션을 시도했지만 제거만 가능 ^M$하고 삭제할 수는 없습니다 ^I. 이제 내 파일은 다음과 같습니다.

line1^I$
line2^I$
line3^I$

온라인에서 찾아봤지만 관련 내용을 찾을 수 없었습니다 ^I. 무슨 뜻이에요?

답변1

따라서 파일은 다음을 사용하여 다음과 같이 표시됩니다 od.cat -A

$ od -c foo
0000000   l   i   n   e   1  \t  \n   l   i   n   e   2  \t  \n   l   i
0000020   n   e   3  \t  \n
0000025
$ cat -A foo
line1^I$
line2^I$
line3^I$
$

조각모두 ^I( ) 문자의 경우 .to를 Tab사용할 수 있습니다 .sed -i 's/\t//g' foo오직줄 끝에서 탭을 제거하려면 다음을 사용하십시오.sed -i 's/\t$//' foo

$ sed -i 's/\t//g' foo
$ od -c foo
0000000   l   i   n   e   1  \n   l   i   n   e   2  \n   l   i   n   e
0000020   3  \n
0000022
$ cat -A foo
line1$
line2$
line3$
$

답변2

^ICtrl캐럿 다음에 I가 오는 것이 아니라 +로 구성된 문자를 의미할 수도 있습니다 I. 실제로 이 문자에는 대부분의 키보드에 단축키(예: )가 있습니다 Tab. 파일을 보면 cat다음과 같은 내용을 볼 수 있습니다.

line1    $
line2    $
line3    $

즉, 사용하는 표시 텍스트 ^I가 눈에 보이는 줄 끝으로 표시되지 않는 한 $.

tr그러나 원하는 경우 다음 방법을 사용하여 제거할 수 있습니다.

$ cat file | tr -d '\t'

\t이 경우 Useful 을 포함한 여러 일반적인 도구에서 탭 문자를 나타내는 간단한 방법인 매직 시퀀스입니다 tr.

dos2unix도구가 "번역"하는 데 사용되는 모든 플랫폼에서 동일하므로 탭에는 영향을 미치지 않습니다.

관련 정보