簡體   English   中英

在awk wrt變量值中的for循環中打印列

[英]Print columns in for loop in awk wrt variable value

我正在嘗試通過以下示例程序使用awk計算單詞“ is”的出現次數:

awk '
    BEGIN { count = 0; word="is"; out=$ }
    /word/ {
        for (i=1; i<=NR; i++) {
        if ($(i) == word) count++;
            } 
        }
    END {print "Found word " word count " no of times"}
' data.txt

但是這里的問題是$(i)沒有被解釋為列號。 您能否建議用$(i)代替該行中i值來i來引用列號(動態)?

i是字段或列號(1、2、3,...), $i是該字段中的值:

$ echo This is it|awk '{for(i=1; i<=NF; i++) print i" "$i}'
1 This
2 is
3 it

所以你的程序:

$ cat test.awk
BEGIN { 
    count = 0
    word="is"
} 
{
    for (i=1; i<=NF; i++) 
        if ($(i) == word) 
            count++
} 
END {
    print "Found word " word" "count " no of times"
} 
$ echo This is it|awk -f test.awk
Found word is 1 no of times

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM