awkにbash変数を挿入する方法は? [コピー]

awkにbash変数を挿入する方法は? [コピー]
  1. awkにbash変数を挿入するにはどうすればよいですか?(たとえば、いくつかのforループでこれを行う必要があります。検索します。Bash変数とは異なるモードまったく)

または

  1. 簡単に作成する方法を探す全体パターン(文字列)これを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

注:静的モード/ ... /(またはダーティ引用符/エスケープのみ)は使用できません。

おすすめ記事