shell 変数の awk での使用


これも定石と言うか FAQ に近い問題です。基本的には '-v' オプションで渡すのが簡単で間違いがありません。

#! /bin/bash
pattern=$1
cat file.c | awk '{
                  if($0 ~ $pattern)
                          print $0;

}'

というものが動作しないと言うことですが、'-v' で渡してあげれば OK です。

pattern=$1
awk -v pattern="$pattern" '$0 ~ pattern' file.c