VAR値と同じ最初のフィールドをフィルタリングしたいです。同様の問題もあります。ここ、~
対応するソリューション(SOL1)を再現できません。しかし、に基づいてeval
(SOL2)うまくいきますが、人工的なようです。もっとSOL1に似たソリューションを探しています。
$ cat tmp
a b c
d e f
g h i
$ awk '$1 ~ /d/' tmp
d e f
$ VAR='d'
SOL1(失敗)
$ awk '$1~VAR' tmp
a b c
d e f
g h i
SOL2(解決方法)
$ CMD='awk '"'"'$1'"~/$VAR/'"
$ echo "$CMD"
awk '$1~/d/'
$ eval "$CMD" tmp
d e f
ベストアンサー1
文字列を==
。
VAR="d"
awk -v var="$VAR" '$1==var' file
出力:
定義
からman awk
:
-v var=val
:プログラムが実行される前にvar変数にval値を割り当てます。これらの変数値は、AWKプログラムのBEGINルールで使用できます。