文本分析工具, 把文件逐行读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理。
awk实际上是gawk
[server@hadoop102 scripts]$ which awk
/usr/bin/awk
[server@hadoop102 scripts]$ ll /usr/bin |grep awk
lrwxrwxrwx. 1 root root 4 7月 17 2021 awk -> gawk
-rwxr-xr-x. 1 root root 514168 6月 29 2017 dgawk
-rwxr-xr-x. 1 root root 428584 6月 29 2017 gawk
-rwxr-xr-x. 1 root root 3188 6月 29 2017 igawk
-rwxr-xr-x. 1 root root 428672 6月 29 2017 pgawk
awk [选项参数] '/pattern1/{action1} /pattern2/{action2} ' 文件名
pattern:表示awk在数据中查找的内容,就是匹配模式
action:找到匹配内容时执行的一系列命令
选项参数说明
选项参数 | 功能 |
---|---|
-F | 指定输入文件分隔符 |
-v | 赋值一个用户自定义变量 |
查找pd文件以root关键字开头的所有行,并输出行的第7列
[root@hadoop102 pd]# cat pd|grep ^root|cut -d ":" -f 7
/bin/bash
[root@hadoop102 pd]# cat pd|awk -F ":" '/^root/{print $7}'
/bin/bash
查找pd文件以root关键字开头的所有行,并输出行的第1列和7列,中间以,
分割
[root@hadoop102 pd]# cat pd|awk -F ":" '/^root/{print $1","$7}'
root,/bin/bash
查找pd文件以root关键字开头的所有行,并输出行的第1、6、7列,中间以,
分割
[root@hadoop102 pd]# cat pd|awk -F ":" '/^root/{print $1","$6","$7}'
root,/root,/bin/bash
只显示pd文件的第一列和第七列,以逗号分给,且在所有行前面添加列名user,shell在最后一行添加“end of file”
[root@hadoop102 pd]# cat pd|awk -F ":" 'BEGIN{print "user,shell"}{print $1","$7}END{print "end of file"}'
user,shell
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
adm,/sbin/nologin
lp,/sbin/nologin
sync,/bin/sync
shutdown,/sbin/shutdown
halt,/sbin/halt
mail,/sbin/nologin
operator,/sbin/nologin
games,/sbin/nologin
ftp,/sbin/nologin
nobody,/sbin/nologin
systemd-network,/sbin/nologin
dbus,/sbin/nologin
polkitd,/sbin/nologin
libstoragemgmt,/sbin/nologin
colord,/sbin/nologin
rpc,/sbin/nologin
gluster,/sbin/nologin
saslauth,/sbin/nologin
abrt,/sbin/nologin
rtkit,/sbin/nologin
pulse,/sbin/nologin
radvd,/sbin/nologin
rpcuser,/sbin/nologin
nfsnobody,/sbin/nologin
unbound,/sbin/nologin
chrony,/sbin/nologin
qemu,/sbin/nologin
tss,/sbin/nologin
usbmuxd,/sbin/nologin
geoclue,/sbin/nologin
ntp,/sbin/nologin
sssd,/sbin/nologin
setroubleshoot,/sbin/nologin
saned,/sbin/nologin
gdm,/sbin/nologin
gnome-initial-setup,/sbin/nologin
sshd,/sbin/nologin
avahi,/sbin/nologin
postfix,/sbin/nologin
tcpdump,/sbin/nologin
server,/bin/bash
mysql,/bin/false
end of file
将pd文件中的用户id增加数值1并输出
[root@hadoop102 pd]# cat pd |awk -v i=0 -F ":" '{print $3+i}'
0
1
2
3
4
5
6
7
8
11
12
14
99
192
81
999
998
997
32
996
995
173
172
171
75
29
65534
994
993
107
59
113
992
38
991
990
989
42
988
74
70
89
72
1000
27
awk内置变量
变量 | 说明 |
---|---|
FILENAME | 文件名 |
NR | 已读的记录数(行号) |
NF | 浏览记录的域的个数(切割后,列的个数) |
统计pd文件名,每行的行号,每行的列数
[root@hadoop102 pd]# awk -F ":" '{print "文件名:"FILENAME"行号:"NR "列数:"NF}' pd
文件名:pd行号:1列数:7
文件名:pd行号:2列数:7
文件名:pd行号:3列数:7
文件名:pd行号:4列数:7
文件名:pd行号:5列数:7
文件名:pd行号:6列数:7
文件名:pd行号:7列数:7
文件名:pd行号:8列数:7
文件名:pd行号:9列数:7
文件名:pd行号:10列数:7
文件名:pd行号:11列数:7
文件名:pd行号:12列数:7
文件名:pd行号:13列数:7
文件名:pd行号:14列数:7
文件名:pd行号:15列数:7
文件名:pd行号:16列数:7
文件名:pd行号:17列数:7
文件名:pd行号:18列数:7
文件名:pd行号:19列数:7
文件名:pd行号:20列数:7
文件名:pd行号:21列数:7
文件名:pd行号:22列数:7
文件名:pd行号:23列数:7
文件名:pd行号:24列数:7
文件名:pd行号:25列数:7
文件名:pd行号:26列数:7
文件名:pd行号:27列数:7
文件名:pd行号:28列数:7
文件名:pd行号:29列数:7
文件名:pd行号:30列数:7
文件名:pd行号:31列数:7
文件名:pd行号:32列数:7
文件名:pd行号:33列数:7
文件名:pd行号:34列数:7
文件名:pd行号:35列数:7
文件名:pd行号:36列数:7
文件名:pd行号:37列数:7
文件名:pd行号:38列数:7
文件名:pd行号:39列数:7
文件名:pd行号:40列数:7
文件名:pd行号:41列数:7
文件名:pd行号:42列数:7
文件名:pd行号:43列数:7
文件名:pd行号:44列数:7
文件名:pd行号:45列数:7
输出文件中的空行所在的行号
[root@hadoop102 pd]# ifconfig |awk '/^$/{print NR}'
9
17
26
35
44
52
60
68
[root@hadoop102 pd]# ifconfig |awk '/^$/{print "空行:" NR}'
空行:9
空行:17
空行:26
空行:35
空行:44
空行:52
空行:60
空行:68
切割IP
[root@hadoop102 pd]# ifconfig ens33|awk '/netmask/{print $2}'
192.168.100.102
[root@hadoop102 pd]# ifconfig ens33 |grep netmask|cut -d " " -f 10
192.168.100.102
网友评论