Shell-如何去掉文件中的一些特殊字符?

Shell-如何去掉文件中的一些特殊字符?

灵芸 发布于 2017-02-22 字数 89 浏览 1154 回复 3

文件中有一些不可见的特殊字符,如^M,^[,^H之类的,由组合键产生的特殊字符,如果去掉?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

归属感 2017-08-05 3 楼

你的这个问题很好,之前也困扰过我
1)、首先在vi命令模式下:set list可以将不可看见的特殊字符打印出来
2)、这些不可见的特殊字符是可以输入的方式如下
比如^I是Tab(t),^M是WIN的换行(nr)
请注意^I 不是^ I, ^M也不是^ M
^I 是Ctrl + V Ctrl + I
^M 是Ctrl + V Ctrl + M
3)、然后用sed -i 's/^M//g' a.txt进行删除(这个里边的^M是用2)中的方式输入的,在终端里边是不显示的,如果你要测试的话可以先用sed 's/^M//g' a.txt 看看效果

归属感 2017-07-29 2 楼

可以用cat -v 来显示非打印特殊的控制字符,然后一步步删除掉,比如:
先查看有哪些特殊字符:
cat -v a.txt
比如有^M字符,则删除:
sed 's/^M//g' a.txt | cat -v

归属感 2017-06-19 1 楼

linux下有个命令dos2unix,这个命令可以取出windows文本到linux上的格式的一些乱码
例如^M

语法为 dos2unix a.txt(from) b.txt(to)

不过貌似不是自带命令也是需要安装的

其他简单方法如各位的答案