一、我对你付出的青春 这么多年
之前一直用着一个挺好用的指令,查看文件内容时,可以过滤掉注释、空行:
cat filename | grep -v '[#;]' | grep -v '^$'
好端端的,突然发现去空行不行了。
[???黑人问号脸]
换到另一台机器试了下,完全一样的文件,完全一样的指令,竟然又可以了……
[??????黑人问号脸*2]
这不科学……
二、换来了一句 谢谢你的成全
回到有问题的机器,再仔细的试了试。
发现线索:这诡异的[K
是什么?
沿线搜索——
这里用到grep的一个参数-color,color有三个值供选择:never、always、auto。
always和auto的区别就是,always会在任何情况下都给匹配字段加上颜色标记,当通过管道或重定向时就会多出一些控制字符,结果会变成
export ^[[1;32m^[[KGREP^[[m^[[K_OPTIONS=’-color=always’
export ^[[1;32m^[[KGREP^[[m^[[K_COLOR=’1;32′
而auto则只在输出到终端时才加上颜色。[1]
看到了很眼熟的[K
,赶紧到~/.bashrc
里看了一眼
果然!之前为了好看(可以高亮出grep的搜索项)的逼格加上去的,这下算砸了自己脚……
三、成全了 你的潇洒与冒险
用其它参数试试:
用「never」,立竿见影!
用「auto」,也是妥妥的。
(心急,早就把~/.bashrc
里的改好成auto
了,哈哈)
目前看来,答案就是 使用了always
,造成给管道后提供数据源时,误增了[K
这样的字符串,导致后续筛选有了偏差。
至于到底是怎么影响到,真不知道,就把锅算在centos上的bug吧~
现在改成 auto
,也就是它能识别到使用者到底是在管道中的场景,还是输出时的场景 了。
那么,这个问题又搞定了,乐一个先~
四、成全了 我的碧海蓝天
强迫症犯了,迫切想去把本地刚弄好的vagrant里的也改了,改之前最后试了一下,结果一愣,竟然没影响?
centos6.9表示毫无压力
centos5.8确认可以稳定重现
行,这下真是找到centos的锅了,不过人家也默默把它修复了,可以翻篇了。
篇外收获——
查看linux版本,lsb_release- a
并不能通杀所有,cat /etc/*-release
也是个很好的手段。
五、参考文档
注释:
(完)
分类:「 blog 」
发表时间:2017-08-20 13:23:34
最后更新:2017-08-20 13:23:34
转载请注明原作者及出处:「 biubiu - http://bluebiu.com/blog/grep-color.html 」