You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWK匹配/etc/passwd指定字段内容并提取目标信息

问题根因
  • 你写的$iter是Shell变量,放在awk的单引号作用域内不会被Shell解析,awk会将其识别为未赋值的awk内部变量,导致匹配逻辑永远不生效
  • 原代码用==是精确完全匹配规则,不符合你要的包含匹配需求
最终修改后代码
for iter in "$@";
do
  awk -F ":" -v target="$iter" '$5 ~ target {print $6}' /etc/passwd
done
改动说明
  • 通过-v target="$iter"参数将Shell变量$iter传递为awk内部可识别的target变量,是Shell变量传入awk的标准合法写法
  • 将匹配规则改为$5 ~ target,~是awk的正则匹配运算符,逻辑为判断第5字段是否包含target变量的内容,匹配你的需求
  • 去掉了冗余的cat、cut管道操作,awk本身可以直接读取/etc/passwd文件,也可以直接输出第6字段,执行效率更高

内容的提问来源于stack exchange,提问作者Nathace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:42:04