如何在AWK中插入shell脚本的命令行参数?

时间:2013-02-14 10:14:37

标签: bash awk

我必须找到所有具有特定数据的记录,我将作为命令行参数传递。

awk表达式是这样的(日期是这种格式:'02 / 08/2013')

  

cat records.txt | awk -F',''$ 4~ / 02/08/2013 / {print $ 1 $ 2}'

此处第4列是日期列。

我想做的是,提供日期作为第一个参数并进行比较。

我试过了,但它没有用。

  

cat records.txt | awk -F',' - v awkvar =“$ 1”'$ 4~ / ^“awkvar / {print $ 1 $ 2}'

这里的日期列以“引用开头,所以我告诉我要查找以”+ awkvar给定日期开头的记录。

任何人都可以帮我吗?

编辑:

  

awk -F',' - var var1 =“$ 1”'$ 4~ / ^“2013 / {print $ 1 $ 2}'{这个正在运作,因为我直接将记录与2013年进行比较}

当我这样做时

  

awk -F',' - var var1 =“$ 1”'$ 4~ / ^“var1 / {print $ 1 $ 2}',它不返回任何内容,有什么区别。

1 个答案:

答案 0 :(得分:4)

要将变量传递给awk,请使用

awk -v awkvar=$value '{print awkvar}'

那就是说,最后不需要管道cat | awk(无用的猫):

awk -F, -v awkvar="$1" '$4 ~ "^\""awkvar {print $1 $2}' records.txt