如何删除文件中的^ H ^ H字符?

时间:2016-09-30 16:27:10

标签: linux vim

我正在做一个show run>文件名保存一些cisco配置。它工作正常,但在保存配置中有那些令我讨厌的不可打印的字符。

它以这种方式显示在vim(也像其他程序,如凯特):

aaa new-model
 --More-- ^H^H^H^H^H^H^H^H^H        ^H^H^H^H^H^H^H^H^H!
!
aaa authentication login default local

而不是

aaa new-model
!
!
aaa authentication login default local

根据维基百科(here),此字符代表backpsace按键,以及诸如“&less”等节目。以适当的可读形式呈现它。 我不知道这是否可以在原点上修复,或至少在vim中禁用,任何建议都是受欢迎的。

3 个答案:

答案 0 :(得分:2)

您可以简单地替换所有这些。例如,

:%s/<C-v><C-h>//g

请注意,<C-v><C-h>分别表示ctrl-v和ctrl-h。这允许您在替换命令中插入不可打印的字符(例如<C-h>)。

这个删除所有这些,但我不能保证结果将被完美地格式化,因为我不确定它们为什么会在那里出现。

答案 1 :(得分:0)

这是一个片段,会天真地尝试将字符视为擦除字符(cat -v用于显示插入符号中的控制字符,类似于在vim中打开文件):

bash$ cat -v file
aaa new-model
 --More-- ^H^H^H^H^H^H^H^H^H        ^H^H^H^H^H^H^H^H^H!
!
aaa authentication login default local

bash$ sed -e $':b; s/.\b//; tb;' | cat -v
aaa new-model
!
!
aaa authentication login default local

这样可以让您更接近实际的终端输出而不是简单地剥离所有擦除字符。

答案 2 :(得分:0)

我相信这个cisco输出,你想摆脱那里的整个--More--线。你可以这样做:

cat cisco-output.txt | grep -v '^ *--More.*\x08' > cisco-output-clean.txt

结果将如下所示:

aaa new-model
!
aaa authentication login default local