Linux教程

Linux三剑客 之 awk学习与应用

本文主要是介绍Linux三剑客 之 awk学习与应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

最近在调gps模块,要把代码里打印的NMEA的msg给抓出来,单独存在一个文件里,素来听闻awk的强大,这次打算借这个机会学习一波:

也就是说,大概是从下面这样的log中,过滤出$开头的所有行,并删除每一行前面的无关内容:

2019年 02月 28日 星期四 12:02:04 CST
2019年 03月 03日 星期日 22:39:29 CST
hello sed
hello sed
test : djdhdhk 
test '$'NMEA: djdhdhk 
test \'$\'NMEA: djdhdhk 
$fjdshfkjhdjkf
896874h32gkjdsgfdsjf
dfsdu09we7r8923ycdsioyv-92yhgfihdlvhd0f9vu
$NmEA: ssfhgskvhdsk 
dfjskhvudisb
hjksghfgjdhojfoh $NMEA: hudkgciugs98yc0sudjlds

要想完成这件事,需要掌握以下知识:

 

 

 然后就是具体操作了:

awk '{for(i=1;i<NF;i++) {if($i ~ /\$/){ printf(" %s FIND %s %s\n",NR, $i, $(i+1)) } } }'  log.txt

输出以下内容:

 

 如果不想要行号和提示,则只需

awk '{for(i=1;i<NF;i++) {if($i ~ /\$/){ printf(" %s %s\n",  $i, $(i+1)) } } }'  log.txt

 

这篇关于Linux三剑客 之 awk学习与应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!