- awkにbash変数を挿入するにはどうすればよいですか?(たとえば、いくつかのforループでこれを行う必要があります。検索します。Bash変数とは異なるモードまったく)
または
- 簡単に作成する方法を探す全体パターン(文字列)これをawkのパラメータとして受け取ります。
awkにbash変数を挿入してみてください -
ログが少しあります -
$ cat > log
test1
test2
ahaha
hahah
はい
$ cat log | awk '$1~/test1|test2/ {print }'
test1
test2
すべてが大丈夫です。
bash変数をawkに貼り付ける必要があります。
$ a=test1
$ b=test2
それから挿入しようとしています。
$ cat log | awk 'BEGIN{a;b} $1~/a|b/ {print }'
ahaha
hahah
$ cat log | awk -v a=test1 -v b=test2 '$1~/a|b/ {print }'
ahaha
hahah
すべてのパターンを文字列として取得し、それをawkのパラメータとして受け取る方法 -
$ p='$1~/test1|test2/ {print }'
$ cat log | awk p
# get test1
# get test2
ベストアンサー1
パターンをawkに変数として渡し、動的パターンを使用して明示的に比較します(つまり、文字列のパターンと一致)。
awk -v pat="$a|$b" '$1 ~ pat' log
または
awk -v a="$a" -v b="$b" '$1 ~ a "|" b ' log
注:静的モード/ ... /(またはダーティ引用符/エスケープのみ)は使用できません。