我有一个带有以下结尾的文本文件:
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
( 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
s 也显示带有可见的行尾$
。
tr
不过,如果您愿意,可以使用以下方法来消除它们:
$ cat file | tr -d '\t'
\t
在本例中是一个神奇的序列,它是在几个常用工具(包括有用的 )中表示制表符的简单方法tr
。
dos2unix
对选项卡没有任何作用,因为它们在该工具用于“翻译”的所有平台之间都是相同的。