ubuntu awk: ^未终止的正则表达式?

ubuntu终端用vim编辑器新建了一个predeal.sh脚本文件,执行predeal.sh脚本文件,截取数据集中在双11的前10000条交易数据作为小数据集small_user_log.csv,命令如下:

  1. chmod +x ./predeal.sh
  2. ./predeal.sh ./user_log.csv ./small_user_log.csv结果显示:
  3. awk: 命令行:12 } ./user_log.csv
  4. awk: 命令行:12 ^ syntax error
  5. awk: 命令行:12 } ./user_log.csv
  6. awk: 命令行:12 ^ 未终止的正则表达式

你这不是awk表达式与输入文件之间没加空格嘛~

使用这种方法使awk识别shell变量:

awk -v "v1=$VAR1" -v "v2=$VAR2" '{print v1, v2}' input_file

 

更新资料

$ cat input
tinky-winky
dipsy
laa-laa
noo-noo
po

$ teletubby='po'

$ awk -v "regexp=$teletubby" '$0 ~ regexp' input
po

注意,任何东西都可以进入shell变量,甚至是成熟的正则表达式,例如^d.*y。只要确保使用单引号防止外壳进行任何扩展即可。

建议封装函数调用