day20

2019-04-22
day20_第1张图片
第二十天.png

三剑客—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

你可能感兴趣的:(day20)