AWK是一種處理文本文件的語言蒋院,是一個強(qiáng)大的文本分析工具亏钩,稍候會有g(shù)rep和sed命令的使用。
awk欺旧、grep姑丑、sed是linux操作文本的三大利器,合稱文本三劍客辞友,也是必須掌握的linux命令之一栅哀。三者的功能都是處理文本,但側(cè)重點(diǎn)各不相同踏枣,其中屬awk功能最強(qiáng)大昌屉,但也最復(fù)雜。grep更適合單純的查找或匹配文本茵瀑,sed更適合編輯匹配到的文本间驮,awk更適合格式化文本,對文本進(jìn)行較復(fù)雜格式處理马昨。
log.txt文本內(nèi)容如下:
2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
1. 用法一
awk '{[pattern] action}' {filenames} # 行匹配語句 awk 只能用單引號
# 每行按空格或TAB分割竞帽,輸出文本中的1、4項(xiàng)
$ awk '{print $1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
# 格式化輸出
$ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo
2. 用法二
awk -F #-F相當(dāng)于內(nèi)置變量FS, 指定分割字符
# 使用","分割
$ awk -F, '{print $1,$2}' log.txt
---------------------------------------------
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple
# 或者使用內(nèi)建變量
$ awk 'BEGIN{FS=","} {print $1,$2}' log.txt
---------------------------------------------
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple
# 使用多個分隔符.先使用空格分割鸿捧,然后對分割結(jié)果再使用","分割
$ awk -F '[ ,]' '{print $1,$2,$5}' log.txt
---------------------------------------------
2 this test
3 Are awk
This's a
10 There apple
3. 用法三
awk -v #設(shè)置變量
$ awk -va=1 '{print $1,$1+a}' log.txt
---------------------------------------------
2 3
3 4
This's 1
10 11
$ awk -va=1 -vb=s '{print $1,$1+a,$1s}' log.txt
---------------------------------------------
2 3 2s
3 4 3s
This's 1 This'ss
10 11 10s
4. 用法四
awk -f {awk腳本} {文件名}
test.awk的內(nèi)容如下:
#!/bin/awk -f
{print $1;}
$ awk -f cal.awk log.txt
---------------------------------------------
2
3
This's
10
4. 其他用法
#過濾第一列大于2的行
awk '$1>2' log.txt
#過濾第一列等于2的行屹篓,打印第一列和第三列
awk '$1==2 {print $1,$3}' log.txt
#過濾第一列大于2.第二列等于'Are',打印第一匙奴、二堆巧、三列
awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt
#從文件中找出長度大于10的行
awk 'length>10' log.txt
#打印九九乘法表
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
喜歡的打賞支持哦 ^ ~ ^