概述
AWK 是一種解釋執(zhí)行的編程語(yǔ)言。
它非常的強(qiáng)大浩销,被設(shè)計(jì)用來專門處理文本數(shù)據(jù)盆偿。
AWK 的名稱是由它們?cè)O(shè)計(jì)者的名字縮寫而來 —— Afred Aho, Peter Weinberger 與 Brian Kernighan汉矿。
部分 AWK 的典型應(yīng)用場(chǎng)景
AWK 可以做非常多的工作拜隧。 下面只是其中的一小部分:
文本處理
生成格式化的文本報(bào)告
進(jìn)行算術(shù)運(yùn)算
字符串操作呻此,以及其它更多
安裝
默認(rèn)Linux系統(tǒng)中是安裝 AWK 的轮纫。
使用 which 命令可以判斷你當(dāng)前的系統(tǒng)上是否安裝了 AWK。
如果沒有安裝趾诗,可以使用 yum 包管理工具安裝:
yum install gawk
which 命令確認(rèn) AWK 已成安裝成功:
which awk
如果得到如下的結(jié)果蜡感,則說明你已經(jīng)成功安裝 awk:
/bin/awk
實(shí)戰(zhàn)
帶著問題來學(xué)習(xí),本次解決解決下這些問題恃泪。
打印出文件的內(nèi)容郑兴。
打印出第一列,打印出最后一列贝乎。
打印出第一行情连,打印出最后一行。
打印出指定行的指定列览效。
以任意順序輸出列却舀。
正則表達(dá)式 匹配行開始。
正則表達(dá)式 匹配行結(jié)束锤灿。
測(cè)試文本 score.txt
Aaron Physics 87
Abel Maths 98
Rahul Chinese 90
Buck Biology 87
Byron English 85
Dave History 89
Enoch Chemistry 89
//打印出文件的內(nèi)容挽拔。
[root@vagrant-centos65 awk]# awk '{print $0}' score.txt
Aaron Physics 87
Abel Maths 98
Rahul Chinese 90
Buck Biology 87
Byron English 85
Dave History 89
Enoch Chemistry 89
//打印出第一列。
[root@vagrant-centos65 awk]# awk '{print $1}' score.txt
Aaron
Abel
Rahul
Buck
Byron
Dave
Enoch
//打印出最后一列但校。
[root@vagrant-centos65 awk]# awk '{print $NF}' score.txt
87
98
90
87
85
89
89
//打印出第一行螃诅。
[root@vagrant-centos65 awk]# awk 'NR==1{print $0}' score.txt
Aaron Physics 87
//打印出最后一行。
[root@vagrant-centos65 awk]# awk 'END{print}' score.txt
Enoch Chemistry 89
//打印出指定行的指定列状囱。比如 第四行第二列
[root@vagrant-centos65 awk]# awk 'NR==4{print $2}' score.txt
Biology
//通過匹配模式串輸出列术裸。
[root@vagrant-centos65 awk]# awk '/b/{print $0}' score.txt
Abel Maths 98
//以任意順序輸出列。
[root@vagrant-centos65 awk]# awk '{print $2 "\t" $1}' score.txt
Physics Aaron
Maths Abel
Chinese Rahul
Biology Buck
English Byron
History Dave
Chemistry Enoch
//行開頭匹配亭枷。
[root@vagrant-centos65 awk]# awk '/^A/' score.txt
Aaron Physics 87
Abel Maths 98
[root@vagrant-centos65 awk]# awk '/^B/' score.txt
Buck Biology 87
Byron English 85
//行結(jié)束匹配袭艺。
[root@vagrant-centos65 awk]# awk '/89$/' score.txt
Dave History 89
Enoch Chemistry 89
Thanks ~
擴(kuò)展:AWK 中級(jí)篇。