awk,列過濾工具
格式:awk? ?[選項]? ? 參數(shù)? ? 文件
-F 制定分隔符? ? ? -f調(diào)用腳本
'? '? ?引用代碼塊熬粗,包含所有內(nèi)容搀玖;
/? /? 匹配代碼塊余境,可以是正則表達式驻呐;
{ }? ?匹配代碼塊灌诅,可以包含一個或多個;
含末;? ?多命令使用分號分隔猜拾;
BEGIN{}? ? 開始就執(zhí)行的操作,必須是{}的內(nèi)容佣盒;
END? ? ? ?? ?結(jié)束執(zhí)行的操作挎袜;
NR? ? ? ??? ???每一行的行號;
NF? ? ? ? ? ? ?當前行的字段個數(shù)肥惭;
# 以冒號分隔打印第一列
awk -F":" '{print $1}' passwd????
#NR代表行號盯仪,NF表示每行有幾列
[root@Andy ~]# awk -F: '{print NR,NF}' passwd
1 7
2 7
3 7
4 7
5 7
6 7
7 7
8 7
#每行添加行號
awk -F: '{print NR,$0}' passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#開始執(zhí)行之前打印start,然后打印每一行,尾行執(zhí)行stop
awk 'BEGIN{print "start"}{print }END{print "stop"}' passwd
#開始執(zhí)行之前打印start,然后打印每行行號,最后打印end
awk -F: 'BEGIN{print "start"}{print NR}END{print"end"}' passwd
#先打印start蜜葱,然后打印行號和$1的數(shù)據(jù)全景,最后打印END
awk -F":" 'BEGIN{print "start"}{print NR$1}END{print "END"}' passwd
start
1root
2bin
3daemon
#打印行號分號隔開換行打印內(nèi)容
awk -F: 'BEGIN{print "START"}{print NR;print}END{print "END"}' passwd
START
1
root
2
bin
3
awk -F"/" '/bash$/{print}' passwd? #打印以bash結(jié)尾的行
awk -F":" '/^root/{print $1}' passwd #打印以root開始的$1