
三剑客—awk
NR
根据行查找文件内容
查找第二行内容
[root 22:41 @ GYJ ~]# awk 'NR==2' oldboy.txt
Zhang Xiaoyu 390320151 :155:90:201
查找2行中前2列
[root 22:28 @ GYJ ~]# awk 'NR==2{print $1,$2}' oldboy.txt
Zhang Xiaoyu
$
列
根据列查找文件内容
查找文件中1列2列
[root 22:44 @ GYJ ~]# awk '{print $1,$2}' oldboy.txt
Zhang Dandan
Zhang Xiaoyu
Meng Feixue
Wu Waiwai
Liu Bingbing
Wang Xiaoai
Zi Gege
Li Youjiu
Lao Nanhai
[root 22:59 @ GYJ ~]#
查找1列中以Zhang开头的行
[root 22:18 @ GYJ ~]# awk '$1~/^Zhang/' oldboy.txt
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
[root 22:18 @ GYJ ~]#
查找2列中以i结尾的行
[root 22:23 @ GYJ ~]# awk '$2~/i$/' oldboy.txt
Wu Waiwai 70271111 :250:80:75
Wang Xiaoai 3515064655 :50:95:135
Lao Nanhai 918391635 :250:100:175
[root 22:24 @ GYJ ~]#
查找2列中以i结尾的行的前三列
[root 22:28 @ GYJ ~]# awk '$2~/i$/{print $1,$2,$3}' oldboy.txt
Wu Waiwai 70271111
Wang Xiaoai 3515064655
Lao Nanhai 918391635
[root 22:28 @ GYJ ~]#
$NF
显示最后一列
[root 23:02 @ GYJ ~]# awk '{print $NF}' oldboy.txt
:250:100:175
:155:90:201
:250:60:50
:250:80:75
:250:100:175
:50:95:135
:250:168:200
:175:75:300
:250:100:175
[root 23:06 @ GYJ ~]#
不指定分隔符
系统默认‘空格’为分隔符
[root 00:10 @ GYJ ~]# awk '{print $0}' gyj.txt
1 2 3 4:5:6
a b c d:e:f
[root 00:10 @ GYJ ~]# awk '{print $1}' gyj.txt
1
a
[root 00:11 @ GYJ ~]# awk '{print $2}' gyj.txt
2
b
[root 00:11 @ GYJ ~]# awk '{print $3}' gyj.txt
3
c
[root 00:11 @ GYJ ~]# awk '{print $4}' gyj.txt
4:5:6
d:e:f
[root 00:11 @ GYJ ~]#
-F
指定分隔符":"
[root 00:26 @ GYJ ~]# awk '{print $0}' gyj.txt
1 2 3 4:5:6
a b c d:e:f
[root 00:27 @ GYJ ~]# awk -F: '{print $1,$2,$3}' gyj.txt
1 2 3 4 5 6
a b c d e f
[root 00:11 @ GYJ ~]# awk -F: '{print $1}' gyj.txt
1 2 3 4
a b c d
[root 00:15 @ GYJ ~]# awk -F: '{print $2}' gyj.txt
5
e
[root 00:15 @ GYJ ~]# awk -F: '{print $3}' gyj.txt
6
f
指定分隔符
空格与冒号
[root 00:26 @ GYJ ~]# awk '{print $0}' gyj.txt
1 2 3 4:5:6
a b c d:e:f
[root 00:18 @ GYJ ~]# awk -F"[ :]" '{print $1}' gyj.txt
1
a
[root 00:18 @ GYJ ~]# awk -F"[ :]" '{print $2}' gyj.txt
2
b
[root 00:19 @ GYJ ~]# awk -F"[ :]" '{print $3}' gyj.txt
3
c
[root 00:19 @ GYJ ~]# awk -F"[ :]" '{print $4}' gyj.txt
4
d
[root 00:19 @ GYJ ~]# awk -F"[ :]" '{print $5}' gyj.txt
5
e
[root 00:19 @ GYJ ~]# awk -F"[ :]" '{print $6}' gyj.txt
6
f
[root 00:19 @ GYJ ~]#
如果中间空格或者指定字符比较多
那么格式为-F"[ :]+"
-v
修改或者创建内置变量
-vOFS=" $"
[root 00:26 @ GYJ ~]# awk '{print $0}' gyj.txt
1 2 3 4:5:6
a b c d:e:f
[root 00:27 @ GYJ ~]# awk -F: '{print $1,$2,$3}' gyj.txt
1 2 3 4 5 6
a b c d e f
[root 00:27 @ GYJ ~]# awk -F: -vOFS="$" '{print $1,$2,$3}' gyj.txt
1 2 3 4$5$6
a b c d$e$f
[root 00:27 @ GYJ ~]# awk -F: -vOFS="#" '{print $1,$2,$3}' gyj.txt
1 2 3 4#5#6
a b c d#e#f
[root 00:28 @ GYJ ~]#
第一列,最后一列调换
[root 00:39 @ GYJ ~]# awk '{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root 00:39 @ GYJ ~]# awk -F"[ :]" -vOFS=":" '{A=$1;$1=$NF;$NF=A;print $0}' /etc/passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
网友评论