bashからawkへのスペースを持つ変数の渡し

bashからawkへのスペースを持つ変数の渡し

bashからawkにスペースを含む変数を渡そうとします。単一の文字列変数(ファイルの最初の列から変数を検索する場合)を使用してこれを実行する簡単なスクリプトがあります。たとえば、次のようになります。

var=string

awk -v v=$var '(index($1, v) !=0) {print}' FILE

もしそうなら、これはうまくいきませんvar="string1 string2"。 2番目の変数に示すように、変数がスペースで区切られた単語のグループである新しい検索があります。例えば、

var="string1 string2 string_n"

awk -v v=$var '(index($1, v) !=0) {print}' FILE

ベストアンサー1

$varまた、コマンドに二重アポストロフィを入力する必要がありますawk

varName="a string with spaces"
awk -v var="$var" '{...your awk code...}'

これは、awkコマンドがシェルによって呼び出され、ほとんどのシェル(bashを含む)が変数置換後にタグを忘れてしまうためです。

おすすめ記事