【发布时间】:2014-11-03 19:03:14
【问题描述】:
我想使用“nstats”命令获取完整的主机名以及他们的服务器正常运行时间。该脚本似乎工作正常。我需要关于第 1 列的“完整”主机名和第 7 列(服务器正常运行时间)打印的帮助。
以下命令只给我他们的部分主机名:
for host in $(cat servers.txt); do nstats $host -H | awk 'BEGIN {IFS="\t"} {$2=$3=$4=$5=$6=$9="" ; print}' ; done
错误输出:(主机名在第 12 个字符后被截断)
linux_server 223 days
linux_server 123 days
windows_serv 23 days
windows_serv 23 days
预期输出:
linux_server1 223 days
linux_server2 123 days
windows_server1 23 days
windows_server2 123 days
servers.txt文件内容如下:
linux_server1
linux_server2
windows_server1
windows_server2
不带 awk 的输出
LINXSERVE10% for host in $(cat servers.txt); do nstats $host -H ; done
linux_server 0.01 47% 22% 56 05:08 20 days 17:21:00
linux_server 0.00 23% 8% 45 05:08 24 days 04:16:46
windows_serv 0.04 72% 30% 58 05:09 318 days 23:32:17
windows_serv 0.00 20% 8% 40 05:09 864 days 12:23:10
windows_serv 0.00 51% 17% 41 05:09 442 days 05:30:14
注意:for host in $(cat servers.txt); do nstats $host -H | awk -v server=$host 'BEGIN {IFS="\t"} {$2=$3=$4=$5=$6=$9="" ; print server }' ; done *** 这工作正常,但它只会列出一个完整的主机名,没有服务器正常运行时间。
如果您能提供任何帮助,我们将不胜感激。
【问题讨论】:
-
你能显示一个
nstats $host -H的输出吗?另外,最好使用while read host; do ... ; done < servers.txt。无需for host in $(cat ...)。 -
awk 命令本身不会剪切字段的输出。
-
仍然可以使用“awk”通过变量 $host 来回显服务器正常运行时间吗?像 {print $host,$7,$8}';
标签: awk