awk
只能每天记一点辣
开始
刚开始就只记录一些简单的用法好了
基本使用姿势
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
看有三部分 BEGIN
, pattern
, END
, 每部分都可有可无
最简单的只有pattern
haibin:~$ last -n 5
haibin tty7 :0 Tue May 30 14:18 gone - no logout
reboot system boot 4.4.0-59-generic Tue May 30 14:16 still running
haibin tty7 :0 Mon May 29 10:02 - down (12:32)
reboot system boot 4.4.0-59-generic Mon May 29 10:00 - 22:34 (12:34)
haibin tty7 :0 Sun May 28 13:33 - crash (20:26)
使用awk
haibin:~$ last -n 5 | awk '{print $1}'
haibin
reboot
haibin
reboot
haibin
看出来了吧,,, $1是第一个域,$2…,$0是所有的,所以
haibin:~$ last -n 5 | awk '{print $0}'
haibin:~$ last -n 5 | awk '{print }'
haibin:~$ last -n 5
是一样的
-F
可以指定分隔符(默认是空格)
比如在cat /etc/passwd
的时候就要用-F :
每部分
BEGIN
可以做表头END
可以做最后信息的输出pattern
可以是正则,只匹配对应的行
patern (r开头的)
cat /etc/passwd | awk -F : '/^r/{print "user: " $1 "\t shell: " $7}'
user: root shell: /bin/bash
user: rtkit shell: /bin/false
user: redis shell: /bin/false
加个BEGIN
cat /etc/passwd | awk -F : 'BEGIN{print "user\tshell"} /^r/{print $1 "\t" $7}'
user shell
root /bin/bash
rtkit /bin/false
redis /bin/false
加个END (统计个数)
cat /etc/passwd | awk -F : 'BEGIN{i=0;print "user\tshell"} /^r/{i++;print $1 "\t" $7} END{print "total\t", i, "users"}'
user shell
root /bin/bash
rtkit /bin/false
redis /bin/false
total 3 users
不过我这边用正则怎么有点问题
从入门到入门
今天没有时间入门了,来日方长