【问题标题】:Awk input and output file delimiterawk 输入输出文件分隔符
【发布时间】:2025-11-23 09:15:02
【问题描述】:

我尝试使用 awk 解析以列分隔的密码文件,并将主机名放在开头并添加一些字段。我需要一个逗号分隔的输出。所以我尝试的是:

/usr/xpg4/bin/awk -F':'  MYHOST=$(hostname)  'BEGIN{OFS=",";} {print MYHOST, $1, $3, $4, $5;}'  /etc/passwd

但是这个命令没有产生我想要的输出。这是一个 Solaris 机器,常规 awk 不起作用,所以我尝试使用 /usr/xpg4/bin/awk

【问题讨论】:

  • 在 solaris 上,您应该始终更喜欢 /usr/xpg4/bin/awk 或 nawk 而不是 /usr/bin/awk。

标签: bash shell awk solaris


【解决方案1】:

这可能会对您有所帮助:

/usr/xpg4/bin/awk -F':'  -v MYHOST="$(hostname)"  'BEGIN{OFS=","} {print MYHOST, $1, $3, $4, $5;}'  /etc/passwd

【讨论】:

  • 是的。这正是我想要的。非常感谢。
  • @JavaRed 小变化:/usr/xpg4/bin/awk -F: -vMYHOST="$(hostname)" -vOFS, '{print MYHOST,$1,$3,$4,$5}' /etc/passwd