通过几个案例解说linux下的awk下令-linux运维
awk根本构造如下:
awk [选项] 'pattern1 {action1} patten2 {action2} ……' filename
单引号是为了和shell下令区分开来。
大括号表示一个下令分组。可以是一个行动,或多个行动,要是是多个行动,则行动之间需要加上;或输入enter键
pattern是模式,表示匹配到的行才进行action。模式可以是正则,或算术表达式等
pattern和action可以只要其一,但不克不及两者都没有
awk常用的选项如下:
-F:指定分割符,分割符可以是字符也可以是一个正则表达式
-v val=value,定义一个变量并赋值
下面,我来通过一个利用来解说awk下令的运用。下面是一个文本文件的局部内容
# head city.txt 北京 BEIJING BJ 上海 SHANGHAI SH 天津 TIANJIN TJ 重庆 CHONGQING ZQ 阿克苏 AKESU AKS ……
此刻的需求是,猎取每个城市的全拼,然后转换为小写情势再连贯上hellowx.com。其他的信息全部给过滤掉。
# awk 'NR%2==0{next}{print}' city.txt | head -n 10 北京 BEIJING BJ 上海 SHANGHAI SH 天津 TIANJIN TJ 重庆 CHONGQING ZQ 阿克苏 AKESU AKS 安定 ANNING AN 安庆 ANQING AQ 鞍山 ANSHAN AS 安顺 ANSHUN AS 安阳 ANYANG AY
我们注意到,偶数行都是空白行。所以只有过滤偶数行就行了。这样过滤掉了空白行。注意上面的NR表示目前行号,意思是偶数行全部过滤掉。next表示忽略目前行。
接下就需要过滤首先和第三字段。
# awk 'NR%2==0{next}{print $2}' city.txt | head -n 10 BEIJING SHANGHAI TIANJIN CHONGQING AKESU ANNING ANQING ANSHAN ANSHUN ANYANG
上面的$2表示第二个字段,联合print表示只打印第二个字段。最后就是转换和连贯的工作了,就需要运用tr下令了。
# awk 'NR%2==0{next}{print $2}' city.txt | head -n 10 | tr [A-Z] [a-z] | awk '{print $1"hellowx.com"}' beijinghellowx.com shanghaihellowx.com tianjinhellowx.com chongqinghellowx.com akesuhellowx.com anninghellowx.com anqinghellowx.com anshanhellowx.com anshunhellowx.com anyanghellowx.com
tr下令是用来作转换的,将全部大写转换我小写,然后再用awk来连贯上背面的字符串。
对上面波及的几个下令,要是不是太熟知可能不是那么容易了解。倡议,可以一步一步的来。熟知了首先步而,然后再去了解第二部。
最后,但愿大家可以认真去学习下这个下令,要是把握了awk,就可以做出许多成心思的事情哦!
以上就是通过几个案例解说linux下的awk下令的细致内容,更多请关注 百分百源码网 其它相干文章!