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或者行號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模式下的操作塊
BEGIN、END模塊后面的語句分隔用;號
print的多個參數之間以逗號分隔
統計文件里面的空行
b=1就是驗證下后面用什么符號,BEGIN,END后面的動作里用分號
?
a=a+1
a++
?
a=a+2
a+=2
?
a+=$0
?
命令賦值 -F
布爾表達式,為真才執行
轉載于:https://blog.51cto.com/11755576/2063298
總結
以上是生活随笔為你收集整理的Linux awk 使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术人生
- 下一篇: linux 其他常用命令