请帮助我理解下面的 awk 命令:
awk -v var1=$1 -v var2=$2 '$1 ~ var1 && $2 ~ var2; /^var1 var2/' $READ_FILE | awk '{print $3}'
我在帖子中看到了这个命令:awk command to accept two variables as parameters and return a value
'$1 ~ var1 && $2 ~ var2; 的用途是什么?上面命令中的/^var1 var2/
'。
最佳答案
应该是:
awk -v var1="$1" -v var2="$2" '$1 ~ var1 && $2 ~ var2; /^var1 var2/' "$READ_FILE"
这意味着在 awk 内部 var1
成为 shell 变量 $1
,var2
成为 $2
。 awk 内部(单引号内)还有 $1
和 $2
,它们表示输入文件中每一行的字段 1 和字段 2。如果第一个字段 ($1
) 与 var1
中字符串中的正则表达式匹配,对于 $2
和 var2
,然后 $1 ~ var1 && $2 ~ var2
计算结果为 1,并打印输入文件的相应行。
/^var1 var2/
表示如果一行以字符串“var1 var2”开头,则打印该行(可能意味着打印标题)...
关于Unix awk 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15503035/