1
2
3
4
5
6
7
8
9
|
[root@yonglinux ~]
# head -n2 passwd |awk -F: '{print $1}'
root
bin
[root@yonglinux ~]
# head -n2 passwd |awk -F: '{print $0}'
root:x:0:0:root:
/root
:
/bin/bash
bin:x:1:1:bin:
/bin
:
/sbin/nologin
[root@yonglinux ~]
# head -n2 passwd |awk -F: '{print $1,$3,$7}'
root 0
/bin/bash
bin 1
/sbin/nologin
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@localhost ~]
# awk -F: '{print $3,$4}' 1.txt |head -5
0 0
1 1
2 2
3 4
4 7
[root@localhost ~]
# awk -F: '{print $3":"$4}' 1.txt |head -5
0:0
1:1
2:2
3:4
4:7
[root@localhost ~]
# awk -F: 'OFS="#"{print $3,$4}' 1.txt |head -5
0
#0
1
#1
2
#2
3
#4
4
#7
|
1
2
3
|
[root@yonglinux ~]
# head -n2 passwd |awk -F: '{print $1"#""@"$3"#"$7}'
root
#@0#/bin/bash
bin
#@1#/sbin/nologin
|
1
2
3
4
|
[root@yonglinux ~]
# awk -F: '$1~/me/' passwd
games:x:12:100:games:
/usr/games
:
/sbin/nologin
[root@yonglinux ~]
# awk -F: '$1~/user/' passwd
user1:x:600:501::
/home/user1
:
/bin/bash
|
1
2
3
4
5
6
|
[root@yonglinux ~]
# awk -F: '/root/ {print $1,$3} /user/ {print $1,$3}' passwd
root 0
operator 11
ftp
14
saslauth 499
user1 600
|
1
2
3
4
|
[root@yonglinux ~]
# awk -F: '$3=="0"' passwd
root:x:0:0:root:
/root
:
/bin/bash
[root@yonglinux ~]
# awk -F: '$3==10' passwd
uucp:x:10:14:uucp:
/var/spool/uucp
:
/sbin/nologin
|
1
2
3
4
|
[root@yonglinux ~]
# awk -F: '$3==10 {print $7}' passwd
/sbin/nologin
[root@yonglinux ~]
# awk -F: '$3=="600"' passwd
user1:x:600:501::
/home/user1
:
/bin/bash
|
1
2
3
4
5
6
7
8
9
10
|
[root@yonglinux ~]
# awk -F: '$3>"500"' passwd | sort -t: -k 3 -n
shutdown
:x:6:0:
shutdown
:
/sbin
:
/sbin/shutdown
halt:x:7:0:halt:
/sbin
:
/sbin/halt
mail:x:8:12:mail:
/var/spool/mail
:
/sbin/nologin
vcsa:x:69:69:virtual console memory owner:
/dev
:
/sbin/nologin
sshd:x:74:74:privilege-separated
ssh
:
/var/empty/sshd
:
/sbin/nologin
dbus:x:81:81:system message bus:/:
/sbin/nologin
postfix:x:89:89::
/var/spool/postfix
:
/sbin/nologin
nobody:x:99:99:nobody:/:
/sbin/nologin
user1:x:600:501::
/home/user1
:
/bin/bash
|
1
2
3
4
|
[root@yonglinux ~]
# awk -F: '$3>500' passwd | sort -t: -k 3 -n
user1:x:600:501::
/home/user1
:
/bin/bash
[root@yonglinux ~]
# awk -F: '$3>'500'' passwd | sort -t: -k 3 -n
user1:x:600:501::
/home/user1
:
/bin/bash
|
1
2
3
4
5
6
7
|
[root@yonglinux ~]
# awk -F: '$7!="/sbin/nologin"' passwd
root:x:0:0:root:
/root
:
/bin/bash
sync
:x:5:0:
sync
:
/sbin
:
/bin/sync
shutdown
:x:6:0:
shutdown
:
/sbin
:
/sbin/shutdown
halt:x:7:0:halt:
/sbin
:
/sbin/halt
user1:x:600:501::
/home/user1
:
/bin/bash
mysql:x:27:27:MySQL Server:
/var/lib/mysql
:
/bin/bash
|
1
2
3
4
|
[root@yonglinux ~]
# awk -F: '$3>"5" && $3<"7"' passwd
shutdown
:x:6:0:
shutdown
:
/sbin
:
/sbin/shutdown
vcsa:x:69:69:virtual console memory owner:
/dev
:
/sbin/nologin
user1:x:600:501::
/home/user1
:
/bin/bash
|
1
2
|
[root@yonglinux ~]
# awk -F: '$3>$4 && $7=="/bin/bash"' passwd
user1:x:600:501::
/home/user1
:
/bin/bash
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@yonglinux ~]
# awk -F: '$3<$4 || $7=="/bin/bash"' passwd
root:x:0:0:root:
/root
:
/bin/bash
adm:x:3:4:adm:
/var/adm
:
/sbin/nologin
lp:x:4:7:lp:
/var/spool/lpd
:
/sbin/nologin
mail:x:8:12:mail:
/var/spool/mail
:
/sbin/nologin
uucp:x:10:14:uucp:
/var/spool/uucp
:
/sbin/nologin
games:x:12:100:games:
/usr/games
:
/sbin/nologin
gopher:x:13:30:gopher:
/var/gopher
:
/sbin/nologin
ftp
:x:14:50:
ftp
user:
/var/ftp
:
/sbin/nologin
user1:x:600:501::
/home/user1
:
/bin/bash
mysql:x:27:27:mysql server:
/var/lib/mysql
:
/bin/bash
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
[root@yonglinux ~]
# head -5 passwd |awk -F: '{print NR":"NF}'
1:7
2:7
3:7
4:7
5:7
[root@yonglinux ~]
# head -5 passwd |awk -F: '{print NF}'
7
7
7
7
7
[root@yonglinux ~]
# head -5 passwd |awk -F: '{print NR}'
1
2
3
4
5
[root@yonglinux ~]
# head -5 passwd |awk -F: '{print $NF}'
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
|
NF 表示是多少段,而$NF是最后一段的值, 而NR则是行号。
5、awk中的数学运算
awk还可以对各个段的值进行数学运算:
1
2
|
[root@yonglinux ~]
# awk -F: '{(tot=tot+$3)};END {print tot};' passwd
1720
|
1
2
|
[root@yonglinux ~]
# awk -F: '{if ($1=="root") print $0}' passwd
root:x:0:0:root:
/root
:
/bin/bash
|
1
2
|
[root@yonglinux ~]
# sum=0;for i in `awk -F: '{print $3}' passwd`;do sum=$[($sum+$i)];done;echo $sum
1720
|