使用vim处理文本文件中的\r\n ^M^@
当我将excel文件中的数据行保存为制表符分隔的.txt文件,然后在VIM中打开这些文件时,我看到excel中曾经是多行文件的内容现在是VIM中的单行文件 可以使用一些替换命令在VIM中分离“线”:使用vim处理文本文件中的\r\n ^M^@,vim,newline,carriage-return,Vim,Newline,Carriage Return,当我将excel文件中的数据行保存为制表符分隔的.txt文件,然后在VIM中打开这些文件时,我看到excel中曾经是多行文件的内容现在是VIM中的单行文件 可以使用一些替换命令在VIM中分离“线”: %s/^M/\r\n/g 在此之后,“行”现在由^@分隔。 我使用另一个替换命令来处理它: %s/^@//g 我的问题是: 为什么我的多行txt excel文件在VI中作为单行打开 什么是^@ 有没有更好的方法“修复”我的txt文件 请尝试以下命令: :%s/^M/\r/g \r是vi
%s/^M/\r\n/g
在此之后,“行”现在由^@
分隔。
我使用另一个替换命令来处理它:
%s/^@//g
我的问题是:
^@
:%s/^M/\r/g
\r
是vim使用的回车符。^M
字符是按字面意思显示的换行符。您通常可以通过运行以下命令来解决此类问题:
dos2unix文件名
这将在适当位置重新格式化文件的换行符(即它将修改文件)
(此命令在Mac OS X上不存在)
如果您没有dos2unix(如您在Mac上),您可以使用sed:
sed的/^M$/'input.txt>output.txt
如果希望通过执行替换来避免创建新文件,也可以使用sed-i
您可以输入^M
,方法是键入CTRLV,然后键入CTRLM
我看到^@是某种特定于Vi的“空咬”占位符。这是正确的吗?仍然不知道它来自哪里…当您键入
:set ff=dos
时会发生什么?ff代表什么?我试试看。看这里:。它设置文件格式,从而设置所使用的结束行字符。(因此,在打开文件后立即键入:设置ff=dos
)我将把它作为一个答案。当我使用命令:%s/^M/\n/g
时,我会收到一条错误消息,上面写着“找不到图案”。但是,如果我使用:%s/^M/\r\n/g
,然后再使用:%s/^@//g
,它是有效的。excel和vim使用的是什么操作系统?嗨,我对excel和vim都使用mac OS 10.7.5 Lion。是的,因为所有操作都是在mac上完成的,第一个建议就行不通了。我假设excel在windows上运行。关于第二部分,请尝试:%s/^M/\r/g
。应该可以。使用dos2unix文件名
无效,无法识别该命令。@eric-我怀疑它是否存在于Mac环境中。它确实存在于我的Cygwin和Solaris环境中。这就是我目前所能查到的。我对tr不是很熟悉,但我确信有一个简单的sed/tr等价物…使用sed-I's/^m$/'input.txt
会给出以下消息:sed:1:“chr3\u F34\u map.txt”:命令c预期\后跟文本。