awk參數處理

awk使用ARGC和ARGV來在命令行中傳入一些變量到awk腳本中。其中:

  • ARGC包含傳入awk腳本的參數的總數目
  • ARGV爲一個包含所有傳入awk腳本的參數的數組,該數組下標從0到ARGC-1。
  • 當你傳入5個參數,ARGC的值爲6
  • ARGV[0]總是"awk"
下面簡單的一個例子展示了ARGC和ARGV怎麼工作的:
fengxi@ubuntu:~/bash/awk$ cat arguments.awk
BEGIN {
    print "ARGC=", ARGC
    for(i=0;i<ARGC;i++)
        print ARGV[i]
}
fengxi@ubuntu:~/bash/awk$ awk -f arguments.awk arg1 arg2
ARGC= 3
awk
arg1
arg2
在gawk中,當前正在處理的文件是存儲在ARGV數組中,該數組可在循環塊中被訪問。ARGIND是訪問ARGV數組的下標去檢索當前文件。當你在awk腳本中僅僅處理一個文件時,ARGIND的值爲1,並且ARGV[ARGIND]會返回當前正在處理的文件名。
下面這個例子只包含一個塊,那就是打印ARGIND的值,以及得到當前文件名從ARGV[ARGIND]
{
    print "ARGIND:", ARGIND
    print "Current file:", ARGV[ARGIND]
}
fengxi@ubuntu:~/bash/awk$ awk -f argind.awk  num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
其中num.txt的內容爲:
fengxi@ubuntu:~/bash/awk$ cat num.txt
1
2
3
4
5
如果傳入不是一個文件,而是兩個文件,則輸出結果爲:
fengxi@ubuntu:~/bash/awk$ awk -f argind.awk  num.txt num2.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 2
Current file: num2.txt
ARGIND: 2
Current file: num2.txt
num2.txt的內容爲:
fengxi@ubuntu:~/bash/awk$ cat num2.txt
1
2






發佈了83 篇原創文章 · 獲贊 38 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章