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を含む)が変数置換後にタグを忘れてしまうためです。