在编辑 unix 文件时,我在 vi 编辑器中获取如下数据。
MGW:^FVMG107
MGW:^FVMG113
MGW:^FVMG108
MGW:^FVMG103
上述数据在命令^F
中无法查看。我也cat
尝试过,但它仍然存在。我怎样才能删除dos2unix
sed
^F
答案1
^F
vim 是否告诉你那里有一个不可打印的字符 0x06 (F 是字母表中的第六个字母,它们的范围: '^@', '^A', '^B'... '^Y', '^ '^[', '^\', '^]', '^^', '^_')
我在 vim、nano、joe 中以图形方式删除它没有问题……但如果您更喜欢命令行方法,知道它是字符 0x06,您可以使用sed -i 's/\x06//g' filename
它来删除它。
PS:恐怕cat -v
只有当您的文件没有任何其他不可打印的字符(这会被破坏)时,删除 ^F 的 Polym 解决方案才有效。
答案2
正如 Ángel 所说,^F
invi
或 的输出cat -v
表示 06 字符。摆脱这些字符的另一种方法是
tr -d "\06" < oldfile > newfile
答案3
编辑:作为天使如上所述,您不应该使用此解决方案,因为它可能会产生不需要的更改。
他的解决方案(hex( ^F
)== \x06
):
sed -i 's/\x06//g' filename
我的(不正确的)解决方案:
cat -v oldfile | sed 's/\^F//g' > newfile
应该这样做。
答案4
鉴于您正在 vim 中处理该文件,您也可以在 vi/vim 中修复此问题。您可以先按 ctrl-v,然后按 ctrl- 来键入这些字符。为此,先按 crtl-v,然后按 ctrl-f。
因此,您可以使用简单的查找/替换:
:%s/^F//
这将适用于所有行(%),并替换(s),^F 的第一个实例,什么也没有,有效地删除它。
如果您想查看文件中的隐藏字符,而不是 cat,请尝试使用 od -c:
od -c <file name>
例如,但在文件中放入 ^F 和两个行结尾:
alex@Smiley:/tmp|⇒ cat test
alex@Smiley:/tmp|⇒ od -c test
0000000 006 \n \n
0000003
这会打印出所有转义的字符,包括制表符、行结尾等。
如果您想使用 sed,您也可以在命令行上使用相同的 ctrl-V、crtl- 技巧。这样你就不需要记住翻译了。