我的文件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但是我不认为这是正确的做事方式,如果有人可以给我一个更聪明的方式。
答案 0 :(得分:1)
这是猜测,但我打赌你试图打印$2
等于从变量构造的特定字符串的每一行。如果是这样的话,那就是:
awk -v m="$m" -v d="$d" -v y="$y" '$2 == m"-"d"-"y' file