我正在根据输入到程序中的所有单词制作一个单词列表,该程序将处理输入到其中的文本。我想使用流编辑器(如 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.