Unix awk 命令

标签 unix awk

请帮助我理解下面的 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 变量 $1var2 成为 $2。 awk 内部(单引号内)还有 $1$2 ,它们表示输入文件中每一行的字段 1 和字段 2。如果第一个字段 ($1) 与 var1 中字符串中的正则表达式匹配,对于 $2var2,然后 $1 ~ var1 && $2 ~ var2 计算结果为 1,并打印输入文件的相应行。

/^var1 var2/ 表示如果一行以字符串“var1 var2”开头,则打印该行(可能意味着打印标题)...

关于Unix awk 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15503035/

相关文章:

bash - diff - 如果文件包含大于 x 的数字,则

linux - awk 正则表达式中的变量

unix - 使用/usr/bin/time 时如何忽略程序的输出?

linux - 使用 tee 命令将输出重定向到不存在的目录中的文件

linux - Matlab - 在不打开 GUI 的情况下运行文件,然后退出

shell - 在后台运行进程并等待其准备就绪的最佳实践

mysql - 使用 sed/awk/grep 改变句子的顺序

r - awk 代码根据另一个文件中的匹配条件过滤一个文件中的行

linux - 如何使用任何 Linux 工具打印 FILENAME 前面的每个文件的第 n(第 5)行?

linux - 编写 shell 脚本以将一个文件的内容查找到另一个文件中并显示所有出现的情况