テキストファイルから^Iの終わりを削除できません。

テキストファイルから^Iの終わりを削除できません。

次のように終わるテキストファイルがあります。

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

sedコマンドと「dos2unix」を使用してオンラインで見つけた多くのオプションを試しましたが、削除のみ可能で^M$削除することはできません^I。今私のファイルは次のようになります。

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

オンラインで閲覧しましたが、関連内容が見つかりませんでした^I。どういう意味ですか?

答え1

したがって、ファイルは次のように表示されますodcat -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ツールが「翻訳」に使用されるすべてのプラットフォームで同じであるため、タブには影響しません。

関連情報