别低估文本处理,用awk

原创
2019/10/31 09:43
阅读数 159

1.起因

  昨晚,办公室里的人越来越少,大家基本都收拾东西回家。我也正准备起身,突然发现同事在非常兴奋地Ctrl+C Ctrl+V。由于我和他关系不错,看他加班就问他在干什么。他回答说在日志中逐条提取所需要的数据。我问他搞了多久了,他说好久了,以为很少,结果好多。我问他数据有没有什么特征,他说那当然有了,都是在同一个出错的字符串上一行,我随即向他推荐文本处理的Linux工具 awk

2.处理

  我先用grep命令定位了所有需要定位的少数行,接下来就是从这些行中摘出所需要的信息了。使用grep基本只是需要关键词和关键数据信息所在行的位置即可。

cat my.log|grep -B 1 'keyword' > error.log

  现在我们就是拿一大行错误信息中的一小段我们关心的字符串就行了,这个时候我们就需要一个分隔符,很庆幸,我们打印的是json,本身就有一个字符串可以用,故易得下面的命令:

cat error.log |awk -F '"' '{print $5}' > needData.txt

  接下来还是有问题,数据有重复,awk自身可以去重,awk '!a[$0]++',其原理可以参看awk '!a[$0]++'去重原理分析,其原理简单来说就是对遇到的每一个字符串进行计数,发现计数大于1就不输出了。至此,工作结束,熟练人员耗费时间不会超过5分钟。

3.感想

  试想若所需处理文本庞大且全用人工处理,该问题就会耗费更多人工,也会妨碍我这位兄弟的健身事业。其实这些命令行,在运维人员那里再正常不过,开发人员曾经也是知晓的,只是长时间不使用,就产生遗忘。软件开发的过程中,我们需要大量使用工具和了解新工具,才能早点下班,这就是荀子所说:“君子生非异也,善假于物也”。

展开阅读全文
加载中

作者的其它热门文章

打赏
1
0 收藏
分享
打赏
2 评论
0 收藏
1
分享
返回顶部
顶部