无法从文本文件中删除 ^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( 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    $

除非,也就是说,无论您使用什么显示文字^Is 也显示带有可见的行尾$

tr不过,如果您愿意,可以使用以下方法来消除它们:

$ cat file | tr -d '\t'

\t在本例中是一个神奇的序列,它是在几个常用工具(包括有用的 )中表示制表符的简单方法tr

dos2unix对选项卡没有任何作用,因为它们在该工具用于“翻译”的所有平台之间都是相同的。

相关内容