次のように終わるテキストファイルがあります。
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
^I
Ctrlキャレットの後にIが続くのではなく、+で構成される文字を意味することもできますI。実際、この文字にはほとんどのキーボードにショートカット(たとえば)がありますTab。ファイルを見ると、cat
次の内容が表示されます。
line1 $
line2 $
line3 $
つまり、使用する表示テキスト^I
が目に見える行末で表示されない限り$
。
tr
ただし、必要に応じて次の方法を使用して削除できます。
$ cat file | tr -d '\t'
\t
この場合、Usefulを含むいくつかの一般的なツールのタブ文字を表す簡単な方法であるマジックシーケンスですtr
。
dos2unix
ツールが「翻訳」に使用されるすべてのプラットフォームで同じであるため、タブには影響しません。