我目前在 awk 使用 shell 变量时遇到问题。这是我的问题, 当我运行以下命令时:
awk -F: '$1=="marco" {print $7}' /etc/passwd
一切都运转良好,花花公子。但是,我希望能够传递我的 $user shell 变量而不是“marco”,因此我尝试以下操作(在阅读有关 -v 标志后):
awk -F: -v awkvar=$user '$1=="$awkvar" {print $7}' /etc/passwd
而且似乎不起作用。谁能帮我吗?
谢谢!
最佳答案
在 shell 端使用引号,不要使用 $
作为 awk 变量。
awk -F: -v awkvar="$user" '$1==awkvar {print $7}' /etc/passwd
在awk
中,$
表示它是一个位置参数(即字段编号),因此它正在寻找字段“marco”,这减少了到 $0
,整行。因此它会找到任何只有一个字段的行。
关于bash - awk 中 shell 变量的用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214881/