2

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

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

猫记录.txt| awk -F ',' '$4 ~ /02/08/2013/ {打印 $1 $2}'

这里第 4 列是日期列。

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

我试过这个,但它不起作用。

猫记录.txt| awk -F ',' -v awkvar="$1" '$4 ~ /^"awkvar/ {打印 $1 $2}'

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

谁能帮我这个?

编辑:

awk -F ',' -v var1="$1" '$4 ~ /^"2013/ {print $1 $2}' {这个有效,因为我直接将记录与 2013 年进行比较}

当我这样做时

awk -F ',' -v var1="$1" '$4 ~ /^"var1/ {print $1 $2}' ,它不返回任何东西,有什么区别。

4

1 回答 1

4

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

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

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

awk -F, -v awkvar="$1" '$4 ~ "^\""awkvar {print $1 $2}' records.txt
于 2013-02-14T10:15:43.883 回答