我有这个文件
我的文件
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
如何$variable
在命令提示符下由用户作为参数获取的 shell 脚本中使用此代码?
您可以使用awk
'-v
标志。由于awk
默认打印,您可以尝试例如:
variable=1
awk -v var=$variable '$6 == var' file.txt
结果:
a b c d e 1
b c s d e 1
编辑:
该命令本质上是相同的,封装在 shell 中。您可以在带有多个参数的 shell 脚本中使用它,如下所示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"
结果:
d f g h j 2
这是 comp.unix.shell 常见问题解答 (http://cfajohnson.com/shell/cus-faq-2.html#Q24) 中的第 24 个问题,但最常用的替代方法是在两者之间进行选择的最常见原因是:
-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