在 awk 中使用环境变量进行条件与运算

在 awk 中使用环境变量进行条件与运算

我找到了这个命令。如果某一行有感兴趣的单词,该命令将输出整行:

temp="sample"
awk -F " " -v var="$temp" '$1 == var' /root/smaple.txt

smaple.txt包含:

sample demo 123 456
sample2 demo2 567 345
sample3 demo4 453 456

现在我想检查一下值,即如果这两个值在一行中,则命令将输出该行:

temp1="sample"
temp2="123"
awk -F " " -v var="$temp1" var2="$temp2" '$1 == temp1 && $3 == temp2' /root/smaple.txt

我的命令的预期输出:

sample demo 123 456

但它不起作用。

答案1

您混淆了变量的名称:

temp1="sample"
temp2="123"
awk -v temp1="$temp1" -v temp2="$temp2" '$1==temp1 && $3==temp2' file

当您需要多个变量时,也-v必须多次使用该参数。

答案2

尝试一次

awk -F " " -v 'var="$temp1" var2="$temp2"' '$1 == var && $3 == var2' /root/smaple.txt

你正在与价值进行比较

相关内容