awk
awk是一個(gè)強(qiáng)大的linux命令揖赴,用來做數(shù)據(jù)統(tǒng)計(jì)文本分析簡單又方便诡延,經(jīng)常一句話就夠鉴象。下面我們就在見識(shí)一下吧忙菠。
1.打印文件的第一列和第四列
awk '{print $1,$4}' demo.txt
awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
#awk -F #-F相當(dāng)于內(nèi)置變量FS, 指定分割字符
#指定多個(gè)分割字符
awk -F '[ ,]' '{print $1,$2,$5}' log.txt
# 設(shè)置變量 awk -v
awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
# 運(yùn)行awk腳本文件
awk -f {awk腳本} {文件名}
# 過濾第一列=2的行
awk '$1==2 {print $1, $2}' log.txt
過濾第一列大于2并且第二列等于'Are'的行
awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt
# 輸出順序號(hào) NR, 匹配文本行號(hào)
awk '{print NR,FNR,$0}' log.txt
# 指定輸出分割符
$awk '{print $1,$2,$5}' OFS=" $ " log.txt
# 使用正則,字符串匹配
# 輸出第二列包含 "th"纺弊,并打印第二列與第四列
$ awk '$2 ~ /th/ {print $2,$4}' log.txt
# ~ 表示模式開始牛欢。// 中是模式。
# 模式取反淆游,不包含‘th’
awk '$2 !~ /th/ {print $2,$4}' log.txt
關(guān)于awk腳本傍睹,我們需要注意兩個(gè)關(guān)鍵詞BEGIN和END。
BEGIN{ 這里面放的是執(zhí)行前的語句 }
END {這里面放的是處理完所有的行后要執(zhí)行的語句 }
{這里面放的是處理每一行時(shí)要執(zhí)行的語句}