AWK - 选择变量中的列而不是输入记录

AWK - 选择变量中的列而不是输入记录

假设您有一个包含复杂过程的 AWK 程序文件:示例.awk。您想要分配变量的特定列,而不是当前记录的整行。

#!/usr/bin/awk -f

BEGIN {...}
... {...}
...
END {
    ...
    var1 = ... # do something
    print "var1 ... " var1

    var2 = ⬛⬛⬛⬛⬛⬛
    print "var2 ... " var2
}

请注意,它var1与文件输入无关。从 shell 运行该程序:

awk -f ./example.awk ./text.txt
...
var1 ... I like chocolate cake
var2 ... chocolate

如本例所示,var2字符串是第三个字段/列。在 UNIX shell 中,它可能相当于

var2=$(cut -d ' ' -f 3 <<< "$var1")

您将如何var2在 AWK 中编写脚本?

答案1

awk -v f=3 '
  END {
    var1 = "I like chocolate cake"
    n = split(var1, a)
    var2 = a[f]
    print var1
    print var2
  }
' /dev/null
I like chocolate cake
chocolate

相关内容