首页 > 系统服务 > 详细

Linux-shell-AWK

时间:2021-09-12 05:25:53      阅读:35      评论:0      收藏:0      [点我收藏+]

awk处理过程: 依次对每一行进行处理的结果

awk  [-F|-f|-v]  ‘BEGIN{}  //{command1; command2}  END{}’  file
 [-F|-f|-v] :-F指定分隔符,-f调用脚本,-v定义变量 var=value
BEGIN   初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
//           匹配代码块,可以是字符串或正则表达式
END      结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
 
特殊含义:
OFS ----输出字段分隔符, 默认也是空格
    $0----表示整行所有数据
    $1---- 每行第一个字段(列)
   NF---- 字段数量(分隔后的列数);$NF最后一列 ‘{print $NF}‘  打印最后一列
   NR---- 行号;NR==1代表第一行   ‘NR==1{print $2}‘ 打印第一行第二列
~            匹配字符
!~           不匹配字符
==         等于
!=           不等于
&&      逻辑与
||             逻辑或
+            匹配时表示1个或1个以上
1、awk  -F: ‘{print $1,$3,$6}‘ OFS="|" /etc/passwd 
将/etc/passwd的第一、三、六列内容打印出来,并且以“|”分割
技术分享图片

2、awk ‘{print}‘  /etc/passwd   ==   awk ‘{print $0}‘  /etc/passwd  

加不加$0,都是打印整行内容

技术分享图片

3、[root@k8s-master ~]# awk ‘{print "a"}‘ /etc/passwd >>ren

passwd有多少行,就会往ren里面写多少行a;每行都是一个a
4、[root@k8s-master ~]# awk -F: ‘NR==1{print $1; print $2}‘   /etc/passwd 
将第一行的以:分割后的字符串,第一个字段、第二个字段分两行显示
技术分享图片

 

5、awk -F":" ‘(NR==1){print $1" "$3}‘ /etc/passwd 等价于 awk -F":" ‘(NR==1){print $1,$3}‘ /etc/passwd     每个字段中间会有空格

技术分享图片

6、每个字符间没有空格,直接相连

[root@k8s-master ~]# awk -F":" ‘(NR==1){print $1 $3}‘  /etc/passwd  

[root@k8s-master ~]# awk -F":" ‘(NR==1){print $1$3}‘  /etc/passwd 

[root@k8s-master ~]# awk -F":" ‘(NR==1){print $1""$3}‘  /etc/passwd 

技术分享图片

 

 

Linux-shell-AWK

原文:https://www.cnblogs.com/csren12/p/15249622.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!