我想知道如何将参数传递给 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