如何删除unix文件中的ctrl F

如何删除unix文件中的ctrl F

在编辑 unix 文件时,我在 vi 编辑器中获取如下数据。

MGW:^FVMG107
MGW:^FVMG113
MGW:^FVMG108
MGW:^FVMG103

上述数据在命令^F中无法查看。我也cat尝试过,但它仍然存在。我怎样才能删除dos2unixsed^F

答案1

^Fvim 是否告诉你那里有一个不可打印的字符 0x06 (F 是字母表中的第六个字母,它们的范围: '^@', '^A', '^B'... '^Y', '^ '^[', '^\', '^]', '^^', '^_')

我在 vim、nano、joe 中以图形方式删除它没有问题……但如果您更喜欢命令行方法,知道它是字符 0x06,您可以使用sed -i 's/\x06//g' filename它来删除它。

PS:恐怕cat -v只有当您的文件没有任何其他不可打印的字符(这会被破坏)时,删除 ^F 的 Polym 解决方案才有效。

答案2

正如 Ángel 所说,^Finvi或 的输出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- 技巧。这样你就不需要记住翻译了。

相关内容