如果您想學習linux awk命令編程,那您必須要知道awk循環命令,主要是 for 和 while。
linux awk for循環
首先,讓我們執行以下命令,看看我們能得到什麼。
➜ awk -F"#" '{ for(i=1;i<=NF;i++) { if($i == "google") { print "NF=" i ", this is a refer"; } else { print "NF=" i "," $i } } }' test-2.txt
test-2.txt的內容是:
192.168.1.1#10.10.83.92#/url/test#google#1234322344
上面命令的結果如下:
NF=1,192.168.1.1 NF=2,10.10.83.92 NF=3,/url/test NF=4, this is a refer NF=5,1234322344
那麼讓我們來看看上面的awk命令是如何執行的呢?
我們一行一行地看一下:
1.awk -F"#"
根據“#”剪切文件test.txt的內容,即: field 1: 192.168.1.1 field 2: 10.10.83.92 field 3: /url/test field 4: google field 5: 1234322344
2.for(i=1;i<=NF;i++)
NF:當前記錄中的字段數 $0:完整的輸入記錄 因為linux awk命令中的$0表示完整的輸入記錄,所以字段數從1開始計算。 上面的for循環意味著從1循環到NF。
3. if($i == "google") {print "NF=" i ", this is a refer"}
$i:表示第i個字段的值 這裡檢查哪個字段的值是“google”,如果字段值是google,則輸出字符串。
4. else { print $i}
如果字段值不是“google”,則輸出其值。
OK,已經瞭解上述命令。
但是,在某些情況下,我們還需要使用awk來處理某些數組。
我們如何做到這一點呢?
linux awk for 循環處理數組
➜ awk 'BEGIN{ a["k-my"] = "my"; a["k-name"] = "name"; a["k-is"] = "is"; a["k-ylspirit"] = "ylsprit"; for(i in a) { print i, ": " a[i] } }'
for(i in a) i:表示數組a的關鍵 a [i]:表示數組a的值
下面我們來看看如何編寫 awk while 循環命令?
linux awk while循環
➜ awk -F"#" '{ i = 0; while(i<=NF) { print i ": "$i; i++; } }' test-2.txt
Linux awk while循環 i從0開始,每次遞增1,直到i等於NF退出循環的字段數。
OK,關於awk for 循環和while 循環就講到這裡。
更多關於awk文章: