awk传入shell参数

##awk传入shell参数
在使用awk处理日志文件的时候,有时候我们需要传递一些参数到awk的命令中去.

  1. 可以使用awk -v
    sort $SCRIPT_DIR/location.log |uniq -c |sort -rn |awk -v dt=date -d yesterday +%Y%m%d -v OFS=”,” ‘{print “NULL”,dt,$2,$1}’ > $SCRIPT_DIR/sqlFile.log
    在awk命令前的-v可以定义参数
    awk -v dt=date -d yesterday +%Y%m%d -v OFS=”,” ‘{print “NULL”,dt,$2,$1}’
  2. 使用”‘$var’”方式,因为使用引号,用起来有些麻烦,当变量中包含引号的时候需要进行转义处理
    num=123
    awk ‘{print “‘$num’”}’ file # 这个是单引号的两段代码和一个shell变量的拼接
  3. 直接使用=,变量位置要在 file 名之前, 否则就不能调用,而且不能使用在BEGIN块中
    awk ‘{print a, b}’ a=111 b=222 file