awk 命令-随笔
awk语法:
awk  [option]   'pattern{action}' file ...
awk   [参数]      '条件{动作}'    文件 ...
解析:
命令:			awk			
参数:			-F			
"":			分隔符	(可为正则表达式(如:[=-.😡],多个相同字符后加“+”))		
条件{动作}':	        可指定某列条件(变量)	        判断条件有		{动作 后跟输出列、行信息 注意:多列用逗号“,”分隔}
$1 表示第一列		  大于>				{print $1}	表示显示第一列
$0 表示整行		  小于<				{print $0}	表示显示整行
$NR 表示行号		  等于==			{print NR}	表示显示行号
$NF 表示最后一列		  ^以什么开头			{print $NF}	表示显示最后一列
$(NF-n) 表示倒数第几列	  以什么结尾$			{print $(NF-n)} 表示显示倒数第几列
/匹配的元素/		        {print NR,$1,$(NF-1),$NF} 多列用逗号“,”分隔
文件名:		files
练习:tt.txt
学号	姓名		外语	数学	三科综合	语文	体育	 电脑	 身高(cm)
1	zengqinghu	42	96	118	150	91	100	181
2	wangchangbin	57	98	80	148.5	70	100	172
3	suweipeng	86	100	92	148	79.5	100	170
4	wangxiaoteng	68.5	100	104	149	84	99	173
5	liupeng		54	100	139.5	97	92	100	184
6	suxubo		82	95	60.5	147	85	100	182
7	guowei		70	100	125	148	76.5	100	201
8	jiangjunning	88	100	103	99	80	100	191
9	zhanggang	43	100	74.5	150	76.5	100	210
10	hezixing	71	100	52.5	145	79	95      185
从小到大顺出hezixing的各科成绩
awk 'NR==11{print $5,$3,$7,$8,$4,$6}' tt.txt
52.5 71 79 95 100 145
显示外语列分数在80分以上人员的学号及身高
cat tt.txt|awk '$3>80{print $0}' |awk '{print $1,$NF}'
学号 身高(cm)
3 170
6 182
8 191
取tt.txt文件的第2行到第3行的内容
awk 'NR2,NR3{print $0}' tt.txt
1	zengqinghu	42	96	118		150	91	100		181
2	wangchangbin	57	98	80		148.5	70	100		172
找出姓名为suxubo的行并显示
awk '/suxubo/ {print $0}' tt.txt
6 suxubo 82 95 60.5 147 85 100 182
awk '/suxubo/' tt.txt
6 suxubo 82 95 60.5 147 85 100 182
显示不含有wangxiaoteng的行
awk '$2!~/wangxiaoteng/' tt.txt
学号	姓名		外语	数学	三科综合	语文	体育	电脑	身高(cm)
1	zengqinghu	42	96	118		150	91	100		181
2	wangchangbin	57	98	80		148.5	70	100		172
3	suweipeng	86	100	92		148	79.5	100		170
5	liupeng		54	100	139.5		97	92	100		184
6	suxubo		82	95	60.5		147	85	100		182
7	guowei		70	100	125		148	76.5	100		201
8	jiangjunning	88	100	103		99	80	100		191
9	zhanggang	43	100	74.5		150	76.5	100		210
10	hezixing	71	100	52.5		145	79	95		185
取文件的学号列、姓名列和身高列内容,并打印行号
awk '{print NR,$1,$2,$NF}' tt.txt
1 学号 姓名 身高(cm)
2 1 zengqinghu 181
3 2 wangchangbin 172
4 3 suweipeng 170
5 4 wangxiaoteng 173
6 5 liupeng 184
7 6 suxubo 182
8 7 guowei 201
9 8 jiangjunning 191
10 9 zhanggang 210
11 10 hezixing 185
显示wangxiaoteng的外语成绩
awk '$2~/wangxiaoteng/ {print $3}' tt.txt
68.5
过滤下中三科综合列中分数大于90,且小于135的人名和身高
awk '$5>90&&$5<135 {print $2,$NF}' tt.txt
zengqinghu 181
suweipeng 170
wangxiaoteng 173
guowei 201
jiangjunning 191
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号