awk使用格式:
awk [选项参数] '内容' '{条件} {动作} {条件} {动作}'
示例1:
在linux中提取文件系统使用率
[root@centos-linux-02 opt]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 41G 2.4G 39G 6% /
devtmpfs 482M 0 482M 0% /dev
tmpfs 494M 0 494M 0% /dev/shm
tmpfs 494M 7.1M 487M 2% /run
tmpfs 494M 0 494M 0% /sys/fs/cgroup
/dev/sda1 1014M 147M 868M 15% /boot
/dev/mapper/centos-home 20G 33M 20G 1% /home
tmpfs 99M 0 99M 0% /run/user/0
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# df -h | awk '{print $1 "\t" $5}'
文件系统 已用%
/dev/mapper/centos-root 6%
devtmpfs 0%
tmpfs 0%
tmpfs 2%
tmpfs 0%
/dev/sda1 15%
/dev/mapper/centos-home 1%
tmpfs 0%
示例2:
在passwd文件中提取第一列和第三列
[root@centos-linux-02 opt]# awk -F ':' '{print $1 "\t" $3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-network 192
dbus 81
polkitd 999
libstoragemgmt 998
abrt 173
rpc 32
mysql 27
sshd 74
postfix 89
ntp 38
chrony 997
tcpdump 72
ning.liu 1000
示例3:
使用内置变量提取passwd文件中的第一列和第三列
[root@centos-linux-02 opt]# awk '{FS = ":"} {print $1 "\t" $3}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-network 192
dbus 81
polkitd 999
libstoragemgmt 998
abrt 173
rpc 32
mysql 27
sshd 74
postfix 89
ntp 38
chrony 997
tcpdump 72
ning.liu 1000
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]#
[root@centos-linux-02 opt]# awk 'BEGIN{FS = ":"} {print $1 "\t" $3}' /etc/passwd
root 0
bin 1
daemon 2
adm 3
lp 4
sync 5
shutdown 6
halt 7
mail 8
operator 11
games 12
ftp 14
nobody 99
systemd-network 192
dbus 81
polkitd 999
libstoragemgmt 998
abrt 173
rpc 32
mysql 27
sshd 74
postfix 89
ntp 38
chrony 997
tcpdump 72
ning.liu 1000
总结:
awk的默认分隔符为“Table”键
awk最常用的参数是- F,用来指定分隔符
awk使用内置变量“FS”时,需要用在'{ }'内,并且使用方式为{FS = " "},一般会与BEGIN一起使用,以达到- F指定分隔符处理数据的效果
网友评论