Linux awk 使用
1、awk讀入第一行內容
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再加上5個l,coolllll
/(cool){5}/ 表示cool匹配5個,cool cool cool cool cool
以上必須要加參數--posix或者--re-interval
首先以“:”號分隔字段,再查找第一個字段符合字符”o”出現至少一次,不超過2次的,最後
打印行號,第一個字段,最後一次字段。
取反!~
1、首先以“:”號,分隔字段,然後同時滿足行號=1,且第一個字段中包含的字符”o”出現至少一次,
不超過2次的,打印行號,第一個字段
2、行號1或者行號
範圍從第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模式下的操作塊
BEGIN、END模塊後面的語句分隔用;號
print的多個參數之間以逗號分隔
統計文件裏面的空行
b=1就是驗證下後面用什麽符號,BEGIN,END後面的動作裏用分號
a=a+1
a++
a=a+2
a+=2
a+=$0
命令賦值 -F
布爾表達式,為真才執行
Linux awk 使用