1. 程式人生 > 其它 >鹹魚洽談(linux三劍客之一awk)又一個週五,這周你鹹了嗎?

鹹魚洽談(linux三劍客之一awk)又一個週五,這周你鹹了嗎?

技術標籤:《鹹魚晒太陽~linux基礎命令》

世上無難事,只怕有錢人,鹹魚們也要努力掙錢呀!
對於linux三劍客,鹹魚的理解:會更好的方便我們在編碼中讀取,寫入程式碼。

目錄

awk介紹 & 語法

AWK 是一種處理文字檔案的語言,是一個強大的文字分析工具。

之所以叫 AWK 是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字元。AWK官方文件

語法
awk [選項引數] ‘script’ var=value file(s)


awk [選項引數] -f scriptfile var=value file(s)

引數說明
-F fs or --field-separator fs指定輸入檔案折分隔符,fs是一個字串或者是一個正則表示式,如-F:
-v var=value or --asign var=value賦值一個使用者定義變數。
-f scripfile or --file scriptfile從指令碼檔案中讀取awk命令。
-mf nnn and -mr nnn對nnn值設定內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴充套件功能,在標準awk中不適用。
-W compact or --compat, -W traditional or --traditional在相容模式下執行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴充套件都被忽略。
-W help or --help, -W usage or --usage列印全部awk選項和每個選項的簡短說明。
-W re-interval or --re-inerval允許間隔正則表示式的使用,參考(grep中的Posix字元類),如括號表示式[[:alpha:]]。

示例

# 每行按空格或TAB分割,輸出文字中的1、4項
[[email protected] ~]# awk '{print $1,$4}' test  #test是一個測試檔案
this test this's orange linux [[email protected] ~]# cat test #檔案全部內容 this is a test this's a test orange apple mysql linux [[email protected] ~]#

運算子

運算子描述
= += -= *= /= %= ^= **=賦值
?:C條件表示式
||邏輯或
&&邏輯與
~ 和 !~匹配正則表示式和不匹配正則表示式
< <= > >= != ==關係運算符
空格連線
+ -加,減
* / %乘,除與求餘
+ - !一元加,減和邏輯非
^ ***求冪
++ --增加或減少,作為字首或字尾

示例

使用正則,字串匹配

#輸出第二列包含 "s",並列印第二列與第四列
awk '$2 ~ /s/ {print $2,$4}' test
[[email protected] ~]# awk '$2 ~ /s/ {print $1,$4}' test
this test
[[email protected] ~]# 
#~ 表示模式開始。// 中是模式。
# 輸出包含 "th" 的行
awk '/th/ ' log.txt
[[email protected] ~]# awk '/th/' test
this is a test
this's a test
[[email protected] ~]# 
#從檔案中找出長度大於 80 的行:
awk 'length>80' log.txt
[[email protected] ~]# awk 'length>80' aa.awk 
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
[[email protected] ~]# 

awk指令碼

[[email protected] ~]# cat aa.awk 
#!/bin/awk -f
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
[[email protected] ~]# 
[[email protected] ~]# sh aa.awk 
1x1=1
1x2=2	2x2=4
1x3=3	2x3=6	3x3=9
1x4=4	2x4=8	3x4=12	4x4=16
1x5=5	2x5=10	3x5=15	4x5=20	5x5=25
1x6=6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36
1x7=7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49
1x8=8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64
1x9=9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81

鹹魚對awk的分享就到這裡了,如果有什麼不懂得可以私聊鹹魚。希望得到大家得認可與點贊收藏~