awk不僅僅是linux系統中的乙個命令,而且是一種程式語言
它可以用來處理資料和生成報告(excel)
處理的資料可以是乙個或多個檔案
可以使直接來自標準輸入、也可以是通過管道獲取標準輸入
awk可以在命令列上直接編輯命令進行操作,也可以寫成awk程式來進行更為複雜的操作
awk指令是由模式、動作、或者模式和動作的組合組成
名稱含義
record
記錄,行
filed
域,區域,字段,列
nf(number of field):表示一行中的區域(列)數量,$nf取最後乙個區域
$ 符號:表示取某個列(區域),如:$1,$2,$nf
nr(number of record):表示行號,awk對每一行的記錄號都有乙個內建變數nr來儲存,每處理完一條記錄nr的值都會自動 +1
fs(-f)field separator:列分隔符,以什麼把行分割成多列
預設處理所有行
awk中$0表示整行
fnr與nr類似,不過檔案記錄不遞增,每個檔案都從1開始
awk同sed一樣也可以通過模式匹配來對輸入的文字進行匹配處理
awk也支援大量的正規表示式模式,大部分與sed支援的元字元類似
awk支援的正規表示式元字元
awk預設不支援的元字元,和需要新增引數才能支援的元字元
正規表示式的運用,預設是在行內查詢匹配的字串,若有匹配則執行action操作,但是有時候僅需要固定的列表匹配指定的正規表示式
如:想取/etc/passwd檔案中第5列($5)這一列查詢匹配mail字串的行,這樣就需要用另外兩個匹配操作符。並且awk裡面只有這兩個操作符來匹配正規表示式
正則匹配操作符說明~
用於對記錄或區域的表示式進行匹配。
!~用於表達與~相反的意思。
正則例項
1)顯示awk.txt中ghi列
2)顯示包含321的行
顯示所有列,可以什麼都不用加
3)以#為分隔符,顯示第一列以b開頭或最後一列以1結尾的行
4)以#為分隔符,顯示第一列以b或c開頭的行
awk是一種程式語言,能夠進行更為複雜的判斷,當條件為真時,awk就執行相關的action,主要是在針對某一區域做出相關的判斷,如列印成績在80分以上的,這樣就必須對這個區域做比較判斷
下表列出了awk可以使用的關係運算子,可以用來比較數字字串,還有正規表示式,當表示式為真的時候,表示式結果為1,否則為0,只有表示式為真,awk才執行相關的action。
awk支援的關係運算子
運算子含義
示例<
小於x>y
<=
小於或等於。
x<=y
==等於
x==y
!=不等於
x!=y
>=
大於或等於
x>=y
>大於x
顯示awk.txt的第2,3行
Lambada表示式簡介
在我們程式中,經常有這樣一些需求 1.需要乙個臨時方法,這個方法只會使用一次,或者使用的很少。2.這個方法的方法體很短,以至於比方法宣告都短,寫起來實在沒勁 我將其稱之為 一句話方法 匿名委託 匿名方法使我們不需要建立具體的委託方法我們可以直接用匿名來定義委託方法 例如 action string ...
c Lambda表示式簡介
c 11標準的lambda引入的主要目的是 能夠將類似於函式的表示式用作接受函式指標或函式符的函式引數,因此,典型的lambda表示式是測試表示式或者比較表示式,可編寫為一條語句,這使得lambda簡潔而易於理解。1 乙個lambda表示式有如下型別 capture list parameter l...
EL表示式簡介
jstl是sun的標準taglib庫,jstl是標籤庫和el語言的結合。el表示式,el表示式的使用方法 和 比如要取出scope中的hello屬性值 姓名 年齡 所屬組 一,el表示式取出map集合中的資料 假設action中儲存map集合 map mapvalue new hashmap map...