新浦京娱乐场官网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.txt

inetis_p1,masterpool^@^@^@^@^@^@;inetis_p2,masterpool^@^@^@^@^@^@;inetis_q1,masterpool^@^@^@^@^@^@;inetis_q2,masterpool^@^@^@^@^@^@;inetis_t1,masterpool^@^@^@^@^@^@;inetis_t2,masterpool^@^@^@^@^@^@;$

像这种不可见字符,用printf可以输出到文件中,比如:

printf 'test111111I am testing141012more testing' > /tmp/test.txt

如果用cat查看

[root@linuxidc script]# cat /tmp/test.txt

test                    I am testing

more testing[root@linuxidc script]#

如果用cat -A查看

[root@linuxidc script]# cat -A /tmp/test.txt

test^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.htm

Linux的grep命令 http://www.linuxidc.com/Linux/2014-02/96927.htm

Linux中grep命令的12个实践例子 http://www.linuxidc.com/Linux/2013-11/92669.htm

Linux基础命令之grep详解 http://www.linuxidc.com/Linux/2013-07/87919.htm

Linux中强大且常用命令:find、grep http://www.linuxidc.com/Linux/2013-07/87816.htm

浅谈Linux 的grep命令与正则表达式 http://www.linuxidc.com/Linux/2013-07/87384.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-06/103370.htm

新浦京娱乐场官网 1

本文由新浦京娱乐站_新浦京娱乐场官网_新浦京娱乐发布于技术创新,转载请注明出处:新浦京娱乐场官网Linux 文本中的不可见字符和处理

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。