当前位置: 技术问答>linux和unix
sed命令删除windows文本文件的行尾控制符
来源: 互联网 发布时间:2017-04-01
本文导语: 各位高手,本菜鸟在测试join命令的结果的时候,发现所得结果不对。 后面通过echo将内容输出到文件,再测试,结果正常。 于是猜想是windows下输入的文件有些特殊字符,特别是行尾的控制符。 我使用dos2unix命令处...
各位高手,本菜鸟在测试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命令有问题 ( 暂时本人没看出来)。
还请各位高手不吝赐教,多谢了!!!
后面通过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命令有问题 ( 暂时本人没看出来)。
还请各位高手不吝赐教,多谢了!!!
|
你的“cat -A test_file | sed -i 's/^M//g'”中sed不能加-i处理,-i是直接修改文件的。但改成“cat -A test_file | sed 's/^M//g' > test_file”后也不能替换,确实是因为cat -A 的原因,你有时间再摸索下
|
你不用cat后再去sed
可以直接“sed -i 's/^M//g' test_file”可以解决(^M 可以不转义)
可以直接“sed -i 's/^M//g' test_file”可以解决(^M 可以不转义)
|
sed -i 's/^M//g' urfile
^M的输入方法是 ctrl + v 再按回车
^M的输入方法是 ctrl + v 再按回车