将 awk 与变量一起使用

将 awk 与变量一起使用

我正在根据输入到程序中的所有单词制作一个单词列表,该程序将处理输入到其中的文本。我想使用流编辑器(如 sed 或 awk)搜索文档中每行的第一个单词,并在找到存储在变量中的模式时返回行号。我有这么多工作正常迄今为止:

awk $1 '{print $1 " " NR""}' dictionary.txt | awk '/^**myWord** /' | cut -d" " -f2

但是,我不知道如何使用变量来代替“myWord”。例如,当我使用时,我只收到错误:

read=searchWord

awk $1 '{print $1 " " NR""}' words.txt | awk '/^**$searchWord** /' | cut -d" " -f2

答案1

单引号字符串内不会发生变量扩展'。尝试:

searchWord="myWord"
awk $1 '{print $1 " " NR""}' words.txt | awk '/^**'"$searchWord"'** /' | cut -d" " -f2

答案2

尝试awk -v

-v var=val
--assign var=val
    Assign the value val to the variable var, before execution of the program begins.  
    Such variable values are  available  to  the  BEGIN block of an AWK program.

相关内容