質問: 単純な変数展開ではなく ``` echo -e 1 2 3\\n4 5 6\\n7 8 9 | awk $1==1,$2==2,$3==3" ``` とすると、当然1行目の1 2 3が取得できますが ここでパターンを変数をつかったらときどうやって取得できるでしょうか? 具体的に 変数`aa="\$1==1,\$2==2,\$3==3"` 注意点としては`$n`や 等号 も変数に含めます。 `awk 'eval aa'` ←のようなことをして、上記と同じ結果をえるにはどうしたらいいでしょうか? ``` awk -v a1=1 , a2=2,a3=3'$1==a1,$2==a2,$3==a3' ``` のような単純なことではない点を再度申し上げます。
回答: 質問されている方の例とおり、条件式をシェル変数condに代入し、$condで参照すればよいと思いますが、いかがでしょうか。 ``` cond='$1==1&&$2==2&&$3==3';printf '1 2 3\n4 5 6\n7 8 9\n' | awk "$cond" ``` 【結果】 ``` 1 2 3 ```