首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

sed下令删除windows文本文件的行尾控制符

2013-04-02 
sed命令删除windows文本文件的行尾控制符各位高手,本菜鸟在测试join命令的结果的时候,发现所得结果不对。后

sed命令删除windows文本文件的行尾控制符
各位高手,本菜鸟在测试join命令的结果的时候,发现所得结果不对。

后面通过echo将内容输出到文件,再测试,结果正常。

于是猜想是windows下输入的文件有些特殊字符,特别是行尾的控制符。
我使用dos2unix命令处理windows输入文件后,发现能得到正确的结果。

于是,我想自己通过sed命令去处理那个行尾控制符,

$ cat -A test_file
M.Golls  Norwich NRD^M$
T.Norms  Brandon BSL^M$

于是,我使用:
$ cat -A test_file | sed -i 's/\^M//g' 
处理完后,发现还是不能得到正确的结果。

1.我猜想使用cat -A命令看到的^M$不是我们正在要处理的真实符号,而是cat
命令所表达的特殊符号,导致我用sed命令得不到正确结果。

2. 使用的sed命令有问题  ( 暂时本人没看出来)。


还请各位高手不吝赐教,多谢了!!!
shell?
[解决办法]
你不用cat后再去sed
可以直接“sed -i 's/^M//g' test_file”可以解决(^M 可以不转义)
[解决办法]

引用:
你不用cat后再去sed
可以直接“sed -i 's/^M//g' test_file”可以解决(^M 可以不转义)
你的“cat -A test_file 
[解决办法]
 sed -i 's/\^M//g'”中sed不能加-i处理,-i是直接修改文件的。但改成“cat -A test_file 
[解决办法]
 sed  's/\^M//g' > test_file”后也不能替换,确实是因为cat -A 的原因,你有时间再摸索下
[解决办法]
sed -i 's/^M//g'  urfile

^M的输入方法是 ctrl + v 再按回车

热点排行