0

我有这个文件

我的文件

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 脚本中使用此代码?

4

2 回答 2

6

您可以使用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
于 2012-10-13T08:56:34.603 回答
0

这是 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
于 2012-10-15T16:45:46.073 回答