将参数传递给 Bash 函数,该函数将用作 awk 的模式

将参数传递给 Bash 函数,该函数将用作 awk 的模式

我想知道如何将参数传递给 Bash 函数,从而充当 awk 的模式。我读过几个往往回答同一问题的问答,但是,我遗漏了一些东西。

我使用以下单行代码来查找一个软件包,在本例中是 vivaldi,使用 Arch Linux 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

相关内容