我必须找到所有具有特定数据的记录,我将作为命令行参数传递。
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}',它不返回任何内容,有什么区别。
答案 0 :(得分:4)
要将变量传递给awk
,请使用
awk -v awkvar=$value '{print awkvar}'
那就是说,最后不需要管道cat | awk
(无用的猫):
awk -F, -v awkvar="$1" '$4 ~ "^\""awkvar {print $1 $2}' records.txt