Tom*_*zak 527
Unix使用0xA作为换行符.Windows使用两个字符的组合:0xD 0xA.0xD是回车符.^M
恰好是vim显示0xD的方式(0x0D = 13,M是英文字母中的第13个字母).
您可以^M
通过运行以下命令删除所有字符:
:%s/^M//g
Run Code Online (Sandbox Code Playgroud)
凡^M
被按住进入Ctrl并输入v之后m,然后释放Ctrl.这有时缩写为^V^M
,但请注意,您必须按照上一句中的描述输入它,而不是按字面输入.
此表达式将替换所有出现^M
的空字符串(即没有).我用它来摆脱^M
从Windows复制到Unix(Solaris,Linux,OSX)的文件.
小智 130
:%s/\r//g
Run Code Online (Sandbox Code Playgroud)
今天为我工作.但我的情况可能略有不同.
Mor*_*ori 63
翻译新行而不是删除它:
:%s/\r/\r/g
Run Code Online (Sandbox Code Playgroud)
cni*_*tar 36
这可能意味着你有回车(不同的操作系统使用不同的方式发信号通知行尾).
使用dos2unix
固定的文件或设置在vim的fileformats:
set ffs=unix,dos
Run Code Online (Sandbox Code Playgroud)
akr*_*aag 16
假设您的文本文件是 - file.txt,然后运行此命令 -
dos2unix file.txt
Run Code Online (Sandbox Code Playgroud)
它将文本文件从dos转换为unix格式.
小智 8
在Unix中,使用'tr'命令可能更容易.
cat file1.txt | tr "\r" "\n" > file2.txt
Run Code Online (Sandbox Code Playgroud)
我有一个文本文件,最初是通过Mac用户在Windows机器上生成的,需要使用该load data
命令将其导入Linux MySQL数据库.
虽然VIM显示'^ M'字符,但上述所有内容都不适合我的特定问题,数据会导入,但总是以某种方式损坏.解决方案最终很容易(经过很多挫折).
解决方案:在同一个文件上执行dos2unix
TWICE就可以了!使用该file
命令可显示沿途发生的情况.
$ file 'file.txt'
file.txt: ASCII text, with CRLF, CR line terminators
$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text, with CRLF line terminators
$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text
Run Code Online (Sandbox Code Playgroud)
并且文件的最终版本完美地导入到数据库中.
如果您没有故意指定不同的fileformat
值(例如,:e ++ff=unix
对于 Windows 文件),则目标文件很可能具有混合 EOL。
例如,如果一个文件有一些行带有<CR><NL>
结尾,其他行也带有
<NL>
结尾,并且由 Vim 在读取时自动fileformat
设置为,则会出现。在这种情况下,(注意:还有一个额外的) 就会发挥作用。详情请参阅。unix
^M (<CR>)
fileformats
s
:help ffs
归档时间: |
|
查看次数: |
278331 次 |
最近记录: |