変数で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.

関連情報