Linux awk命令详解1-1)、基本语法
[root@hadoop1 /]#awk ‘pattern + action’
A)、书写格式
命令行模式
[root@hadoop1 /]#awk -F":" '' /etc/passwd
文本模式
[root@hadoop1 /]#vi testAwk.sh
#!/usr/bin/awk
BEGIN
B)、变量
常用内置变量
$0当前所有的字段
$0 - $n系统的内置变量,当前第n个字段
NF输入来记录的分隔符(默认的是空格)
NR行号
FS : field separator,读取文件本时,所使用字段分隔符
RS : Record separator,输入文本信息所使用的换行符
OFS : Output Filed Separator,文件分隔符
ORS:Output Row Separator,行分隔符
外置变量
awk -v n="test" 'BEGIN'
- v :传参的参数
C)、操作符
关系操作符:< , > , = , == , != , ~ , !~
~ :表示匹配的意思
!~ :表示不匹配的意思
例如:[root@hadoop1 /]# awk -F":" '$7 ~ /^\/bin/' /etc/passwd
[root@hadoop1 /]# awk -F":" '$7!~ /^\/bin/' /etc/passwd
布尔操作符:&& , , !
D)、print与printf的区别
print :直接输出变量值或给定的字符串
Printf:可以实现格式化输出
[root@hadoop1 /]#awk -F":" '' /etc/passwd
1-2)、awk流程控制A)、条件
实例一
[root@hadoop1 /]#awk -F":" '}' /etc/passwdno
pk
No
***********
实例二
[root@hadoop1 /]#awk -F":" '}' /etc/passwd
$NF:是表示最后一个单词的记录
B)、while语句
实例一
[root@hadoop1 /]#awk -F":" '}' /etc/passwd
实例二
[root@hadoop1 /]#awk -F":" '}' /etc/passwd
C)、数组
[root@hadoop1 /]#awk -F":" 'END}' /etc/passwd
1-3)、函数A)、算数函数
int(x) :返回X的整数部分的值
sqrt(x) :返回x的平方根
rand() :返回伪随机数r,其中0
srand :建立rand()新的种子数,如果没有制定就用当天的时间
B)、算数函数
sub(),gsub() :替换函数
Index(s,t) :返回子串t在字符串s中的位置,如果没有则返回
length(s) :返回字符串长度,当没有给出s时,返回$0的长度
match(s,a,seq) :使用seq将字符串s分解到数组a中,默认seq伪FS
sub(),gsub() :替换函数
Index(s,t) :返回子串t在字符串s中的位置,如果没有则返回
length(s) :返回字符串长度,当没有给出s时,返回$0的长度
match(s,a,seq) :使用seq将字符串s分解到数组a中,默认seq伪FS
C)、自定义函数
[root@hadoop1 /]#awk 'function sum(n,m)BEGIN'
13
1-4)、awk实战A)、获取IP地址
[root@hadoop1 /]#ifconfig wlp3s0 grep -w "inet" awk ''
192.168.199.137
B)、查找制定字段的运行时间
[root@hadoop1 /]#ps -efgrep java awk ''
00:00:00
C)、对每一个分隔符添加相对应的字符
[root@hadoop1 /]#nl passwd awk -F":" '' head -n 5
1root*****/bin/bash
2daemon*****/usr/sbin/nologin
3bin*****/usr/sbin/nologin
4sys*****/usr/sbin/nologin
5sync*****/bin/sync
或
[root@hadoop1 /]#$ nl passwd awk 'BEGIN' head -n 5
1root****/bin/bash
2daemon****/usr/sbin/nologin
3bin****/usr/sbin/nologin
4sys****/usr/sbin/nologin
5sync****/bin/sync
记录当前的field个数
$ nl passwd awk 'BEGIN' head -n 5
1root****/bin/bash****7
2daemon****/usr/sbin/nologin****7
3bin****/usr/sbin/nologin****7
4sys****/usr/sbin/nologin****7
5sync****/bin/sync****7