1. 程式人生 > >Linux awk 使用

Linux awk 使用

space proc color nor 運算符 直接 == tex 技術分享

技術分享圖片



技術分享圖片


技術分享圖片

1awk讀入第一行內容

2、判斷是否符合模式中的條件NR<3

如果匹配,則執行對應的動作print NR $1

如果不匹配,繼續讀下一行

3、繼續讀下一行

4、直到讀到最後一行


技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

默認情況:一行就是一個記錄,當然如果修改也行分隔符就不一樣了。


內置變量:

技術分享圖片

正則表達式:

技術分享圖片

運算符:

技術分享圖片

技術分享圖片

其實在awk看來,文件從頭到尾一段連續的字符串,只是中間有一些\n(回車換行符),RS為了

方便人查看,就把RS值設置為\n,當然可以人為修改,如上圖

技術分享圖片

+表示:多個一樣的,例如多個空格

技術分享圖片

兩種寫法


技術分享圖片

這個區別在哪??? 為什麽顯示不同,大神來解答下。。。


技術分享圖片

當然-F後面[],可加可不加,如果就以一個分隔符的話

x重復m /cool{5}/

x重復至少m /cool{2,}/

x重復至少m次,但不超過n /cool{m,n}/

註意:cool加不加括號

/cool{5}/ 表示coo再加上5lcoolllll

/(cool){5}/ 表示cool匹配5個,cool cool cool cool cool

以上必須要加參數--posix或者--re-interval


技術分享圖片

首先以“:”號分隔字段,再查找第一個字段符合字符”o”出現至少一次,不超過2次的,最後

打印行號,第一個字段,最後一次字段。

取反!~

技術分享圖片

1、首先以“:”號,分隔字段,然後同時滿足行號=1,且第一個字段中包含的字符”o”出現至少一次,

不超過2次的,打印行號,第一個字段

2、行號1或者行號

2,打印第一個字段。

技術分享圖片


技術分享圖片

範圍從第1行到第3


技術分享圖片

awk不能直接使用行號作為範圍,因為awk具有內置變量NR來記錄


範圍模式

awk ‘/start pos/,/end pos/ {print $0}’ awk1.txt

awk ‘/start pos/,NR==xxx {print $0}’ awk1.txt


技術分享圖片

這樣就只能取第一個條件了

一個開始和一個結束 必須要能確定行

這個=2 <=3 確定不了

所以只按前面的=2取了第二行


技術分享圖片

技術分享圖片


技術分享圖片

技術分享圖片

沒有文件,awk依舊可以處理BEGIN模式下的操作塊


技術分享圖片

BEGINEND模塊後面的語句分隔用;

print的多個參數之間以逗號分隔


技術分享圖片


技術分享圖片

技術分享圖片

統計文件裏面的空行


技術分享圖片

b=1就是驗證下後面用什麽符號,BEGIN,END後面的動作裏用分號

a=a+1

a++

a=a+2

a+=2

a+=$0

命令賦值 -F

技術分享圖片

技術分享圖片

布爾表達式,為真才執行


Linux awk 使用