awk のパターンとして使用される Bash 関数に引数を渡します。

awk のパターンとして使用される Bash 関数に引数を渡します。

Bash関数に引数を渡してawkモードで動作する方法を知りたいです。同じ質問に答える傾向がある複数のQ&Aを読んでいましたが、何かが欠けています。

私は次の1行のコードを使用してArch Linuxを使用してパッケージ(この場合はvivaldi)を見つけますpackman

 pacman -Sl | awk '$2~ /^vivaldi/{print $2, $3, $4, "[" $1 "]"}' | sort

次の関数を作成しましたが、実行すると出力は生成されません。

function pacname() {
    #pattern="$1"
    pacman -Sl | awk -v pattern="$1" '$2~ /^"pattern"/{print $2, $3, $4, "[" $1 "]"}' | sort
}

ベストアンサー1

/.../Awkの正規表現では変数は拡張されません。代わりに、文字列形式を使用して"^"patternアンカー演算子を変数パターン値に関連付けることができます。

前任者。

echo 'baz foobar' | awk -v pattern="foo" '$2 ~ "^"pattern {print $1}'
baz

おすすめ記事