Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何删除文件中的^H ^H字符?_Linux_Vim - Fatal编程技术网

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

Linux 如何删除文件中的^H ^H字符?,linux,vim,Linux,Vim,我正在做一个show run>filename来保存一些cisco配置。它工作得很好,但是在保存配置中有一些不可打印的字符让我很恼火 它在vim中(也在其他程序中,如kate)以以下方式显示: 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

我正在做一个show run>filename来保存一些cisco配置。它工作得很好,但是在保存配置中有一些不可打印的字符让我很恼火

它在vim中(也在其他程序中,如kate)以以下方式显示:

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
根据wikipedia(),这个字符代表backpsace按键,像“less”这样的程序以适当的可读形式显示它。
我不知道这是否可以在原点上修复,或者至少在vim中禁用,欢迎任何建议。

您可以简单地替换所有选项。比如说,

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


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

您可以简单地替换所有内容。比如说,

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


这将删除所有字符,但我不能保证结果的格式是完美的,因为我不确定它们为什么会出现在那里。

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


这将使您更接近实际的终端输出,而不是简单地剥离所有擦除字符。

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


这将使您更接近实际的终端输出,而不是简单地去除所有擦除字符。

我相信对于此cisco输出,您希望去除整个
--更多--
行。您可以通过以下方式执行此操作:

cat cisco-output.txt | grep-v'^*--更多信息。*\x08>cisco output clean.txt

结果如下:

aaa new-model
!
aaa authentication login default local

我相信,对于cisco的输出,您希望去掉整个
--更多--
行。您可以这样做:

cat cisco-output.txt | grep-v'^*--更多信息。*\x08>cisco output clean.txt

结果如下:

aaa new-model
!
aaa authentication login default local

您是否可以将其设置为fillchar?如果在转储配置之前键入
终端长度0
,它不会在每次满屏后暂停。我使用的是autocommand show running,在这种情况下,说明仅为单行,因此我无法运行终端长度0。如果您想查看没有这些字符的文件您可以使用
cat
命令。在我的例子中,我创建了自动命令。它们将在打开文件时用空字符串或与之等效的任何字符替换所有这些控制字符。因此,每次我打开文件时,它都会替换所有控制字符并显示正确的文本。另外,请记住,这些Ange是临时的,在文件更改后会被忽略。例如,我在打开文件时将^M更改为新行。是否可以将其设置为fillchar?如果在转储配置之前键入
终端长度0
,它将不会在每次满屏后暂停。我使用的是autocommand和show running,在本例中是instruccions仅为单行,因此我无法运行终端长度0我确实在vim中找到了这些字符,如果您想查看没有这些字符的文件,可以使用
cat
命令。在我的情况下,我创建了自动命令。在打开文件。因此,每次我打开文件时,它都会替换所有文件并显示正确的文本。此外,请记住,这些更改是临时的,一旦文件更改就会被忽略。例如,我在打开文件时将^M更改为新行。这不起作用,很奇怪,因为屏幕上显示了正确的字符:
$cat ori基纳尔>目的地#保留退格字符$cat original | grep-v'^*--更多。*\x0>目的地#保留退格字符$cat original#在屏幕上只显示正确的字符
它不起作用,这很奇怪,因为在屏幕上显示正确的字符:
$cat original>destination#保留退格字符$cat original|grep-v'^*--More.*\x0>destination#保留backspaces$cat-original#在屏幕上只显示正确的字符
不幸的是,vim说,它什么也没做“E486:找不到模式:@user322049
不是您输入的文本。它是control-v,后跟control-hOk,我终于可以测试它,但也不起作用,尽管在vim中我看到:s/^H//g,但我得到了“E486:找不到模式:”(如果您想签出,我只是在这里上传了文件)@user322049好吧,我可以保证这是正确的解决方案,并且已经手动确认了它的工作原理,因此您可能是做错了什么。您是否键入了
^H
(两个字符,插入符号,然后是'H'),您是否键入了ctrl-v,ctrl-H?不幸的是,vim说,它没有任何作用“E486:找不到模式:@user322049
不是您输入的文本。它是control-v,后跟control-hOk,我终于可以测试它,但也不起作用,尽管在vim中我看到:s/^H//g,但我得到了“E486:找不到模式:”(如果您想签出,我只是在这里上传了文件)@user322049好吧,我可以保证这是正确的解决方案,并且已经手动确认它有效,因此您可能做错了什么。您是否键入了
^H
(两个字符,插入符号然后是'H'),是否键入了ctrl-v,ctrl-H?