awk命令接受两个变量作为参数并返回一个值

che*_*eri 3 unix awk

我有一个有50行的文件.每行由三列组成.前两列是变量,它将作为参数传递,以返回第3列的值.对于ex .. command_file.txt是文件,它包含

A B 10
C D 20
E F 30
G H 50
I J 70
...

我有一个脚本,使用以下命令.

#!/user/bin/sh
READ_FILE=/export/home/user/command_file.txt
VA1=A
VA2=B
GET_VALUE=`awk '/ -v var="$VA1" '$1 ~ var' -v var1="$VA2" '$1 ~ var1''/ $READ_FILE l awk '{print $3}'`
echo $GET_VALUE

当我调用此脚本将A和B作为参数传递时,我希望返回值10.但它返回错误.但是如果我在下面的命令上硬编码它就可以了.

GET_VALUE=`awk '/A B'/ $READ_FILE lawk '{print $3}'`
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢.

Pau*_*ce. 9

你必须awk's在awk脚本开始之前使用变量传递来避免毛茸茸的引用,并修复其他问题:

#!/user/bin/sh
READ_FILE=/export/home/user/command_file.txt
VA1=A
VA2=B
GET_VALUE=$(awk -v var="$VA1" -v var1="$VA2" '$1 ~ var &&  $2 ~ var1 {print $3}' $READ_FILE)
echo $GET_VALUE
Run Code Online (Sandbox Code Playgroud)