尝试将变量从用户输入传递到awk:
尝试过awk -v的变体,错误表明'awk:invalid -v option',即使该选项列在man文件中也是如此.
#! /bin/bash
read -p "Enter ClassID:" CLASS
read -p "Enter FacultyName:" FACULTY
awk '/FacultyName/ {print}' data-new.csv > $FACULTY.csv
awk -vclass=${CLASS} '/class/ {print}' data-new.csv >> $FACULTY.csv
echo Class is $CLASS
echo Faculty member is $FACULTY
Run Code Online (Sandbox Code Playgroud)
某些版本的awk需要-v在变量赋值之间留一个空格.此外,您应该将bash变量放在双引号中,以防止在传递给awk之前shell进行不必要的解析(例如,单词拆分,通配符扩展).最后,在awk中/.../是一个常量正则表达式(/class/即将搜索字符串"class",而不是变量"class"的值).所有这一切都得到纠正,这是我认为会做你想要的awk命令:
awk -v class="${CLASS}" '$0 ~ class {print}' data-new.csv >> $FACULTY.csv
Run Code Online (Sandbox Code Playgroud)
现在,你是否有任何理由而不是:
grep "$CLASS" data-new.csv >> $FACULTY.csv
Run Code Online (Sandbox Code Playgroud)