我有这个文件
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
作为参数?
答案 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