如何使用shell脚本将参数发送到awk

时间:2012-10-13 08:52:03

标签: shell awk

我有这个文件

MYFILE

a b c d e 1  
b c s d e 1  
a b d e f 2  
d f g h j 2  
awk 'if $6==$variable {print @0}' myfile

如何在shell脚本中使用此代码,在命令提示符下用户将$variable作为参数?

2 个答案:

答案 0 :(得分:6)

您可以使用awk的{​​{1}}标记。由于-v默认打印,您可以尝试例如:

awk

结果:

variable=1
awk -v var=$variable '$6 == var' file.txt

编辑:

命令基本相同,用shell包装。您可以在具有多个参数的shell脚本中使用它,例如a b c d e 1 b c s d e 1

script.sh 2 j的内容:

script.sh

结果:

command=$(awk -v var_one=$1 -v var_two=$2 '$6 == var_one && $5 == var_two' file.txt)
echo -e "$command"

答案 1 :(得分:0)

这是comp.unix.shell常见问题解答(http://cfajohnson.com/shell/cus-faq-2.html#Q24)中的第24个问题,但是最常用的选择,最常见的选择2是:

-v var=value '<script>' file1 file2
if you want the variable to be populated in the BEGIN section

或:

'<script>' file1 var=value file2
if you do not want the variable to be populated in the BEGIN section and/or need to change the variables value between files