如何在awk中使用变量进行搜索

时间:2014-11-06 18:42:49

标签: awk

我的文件test1如下

NAME1 04-03-2014 
NAME2 04-04-2014 

现在,当我从命令行执行时,我能够获得所需的o / p,而不是当我将它用作变量时。我的awk版本是3.1.5

从cmd行开始工作:awk' $ 2 = / 04-03-2014 /' TEST1 不适用于bash / ksh脚本:

export m=04 d=03 y=2014
awk -v m="$m" -v d="$d" -v y="$y" '$2 = /m-d-y/' test1 OR
awk -v m="$m" -v d="$d" -v y="$y" '$2 = m-d-y' test1  ### This replaces the 2nd field as -2010

我之前在printf语句中使用了awk中的变量来计算数字,但上面的例子似乎并不适合我。但是,我尝试了一种解决方法,即在文件中回显awk cmd然后将文件作为脚本执行,这给了我想要的o / p但是我不认为这是正确的做事方式,如果有人可以给我一个更聪明的方式。

1 个答案:

答案 0 :(得分:1)

这是猜测,但我打赌你试图打印$2等于从变量构造的特定字符串的每一行。如果是这样的话,那就是:

awk -v m="$m" -v d="$d" -v y="$y" '$2 == m"-"d"-"y' file