首页 / 操作系统 / Linux / Linux 文本中的不可见字符和处理
同事提供了一个接口,我通过curl调用,然后将返回结果写入到文件,然后用grep和sed处理这个文件。用浏览器和curl打开的时候,都是正常的,返回的都是inetis_p1,masterpool;inetis_p2,masterpool;inetis_q1,masterpool;inetis_q2,masterpool;inetis_t1,masterpool;inetis_t2,masterpool;但写入文件之后,用grep和sed处理的时候,总是说这是一个二进制文件[root@linuxidc script]# grep master /var/tmp/qiehuan145.txt匹配到二进制文件 /var/tmp/qiehuan145.txt很奇怪,用vim打开之后,发现是这样的inetis_p1,masterpool^@^@^@^@^@^@;inetis_p2,masterpool^@^@^@^@^@^@;inetis_q1,masterpool^@^@^@^@^@^@;inetis_q2,masterpool^@^@^@^@^@^@;inetis_t1,masterpool^@^@^@^@^@^@;inetis_t2,masterpool^@^@^@^@^@^@;里面多了很多的不可见的字符^@用cat -A也能看到[root@linuxidc script]# cat -A /var/tmp/qiehuan145.txtinetis_p1,masterpool^@^@^@^@^@^@;inetis_p2,masterpool^@^@^@^@^@^@;inetis_q1,masterpool^@^@^@^@^@^@;inetis_q2,masterpool^@^@^@^@^@^@;inetis_t1,masterpool^@^@^@^@^@^@;inetis_t2,masterpool^@^@^@^@^@^@;$像这种不可见字符,用printf可以输出到文件中,比如:printf "test 11 11 11I am testing 14 10 12more testing" > /tmp/test.txt如果用cat查看[root@linuxidc script]# cat /tmp/test.txttest I am testingmore testing[root@linuxidc script]#如果用cat -A查看[root@linuxidc script]# cat -A /tmp/test.txttest^I^I^II am testing^L^H$more testing[root@linuxidc script]#现在说一下我是怎么解决的cat -A /var/tmp/qiehuan145.txt |sed "s/[^@]//g"先用cat -A读取,然后用sed替换,不过需要注意到是^需要转义Linux文本处理工具grep命令详解 http://www.linuxidc.com/Linux/2014-02/97194.htmLinux的grep命令 http://www.linuxidc.com/Linux/2014-02/96927.htmLinux中grep命令的12个实践例子 http://www.linuxidc.com/Linux/2013-11/92669.htmLinux基础命令之grep详解 http://www.linuxidc.com/Linux/2013-07/87919.htmLinux中强大且常用命令:find、grep http://www.linuxidc.com/Linux/2013-07/87816.htm浅谈Linux 的grep命令与正则表达式 http://www.linuxidc.com/Linux/2013-07/87384.htm本文永久更新链接地址