首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用awk格式化nstats的输出

问使用awk格式化nstats的输出
EN

Stack Overflow用户
提问于 2014-11-03 09:45:53
回答 1查看 67关注 0票数 0

我希望使用"nstats“命令获得一个完整的主机名,并使其服务器能够正常运行。剧本似乎运行良好。我需要帮助第一列与“完整”主机名和第7列(服务器启动时间)打印。

以下命令只给出它们的部分主机名:

代码语言:javascript
复制
 for host in $(cat servers.txt); do nstats $host -H | awk 'BEGIN {IFS="\t"} {$2=$3=$4=$5=$6=$9="" ; print}' ; done

坏输出:(主机名在第12个字符之后被切断)

代码语言:javascript
复制
 linux_server  223 days
 linux_server  123 days
 windows_serv  23 days
 windows_serv  23 days

预期输出

代码语言:javascript
复制
 linux_server1   223 days
 linux_server2   123 days
 windows_server1  23 days
 windows_server2  123 days

servers.txt文件的内容如下:

代码语言:javascript
复制
 linux_server1
 linux_server2
 windows_server1
 windows_server2

没有awk的输出

代码语言:javascript
复制
 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 *这个工作正常,但它只列出一个完整的主机名,没有服务器正常运行时间。

如果你能提供任何帮助,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-03 09:55:03

你知道你可以选择用awk打印的字段吗?

代码语言:javascript
复制
for host in $(cat servers.txt); do
    nstats $host -H |
    awk 'BEGIN {IFS="\t"} {print $1,$7,$8}';
done

这些将只打印您感兴趣的三个字段。

标记为"note“的awk代码是完全无用的--它相当于

代码语言:javascript
复制
for host in $(cat servers.txt); do
    echo "$host"
done

更新:在意识到问题是nstats命令之后,awk行命令将是

代码语言:javascript
复制
    awk -v server="$host" 'BEGIN {IFS="\t"} {print server,$7,$8}';

然后输出如下所示(服务器正常运行时覆盖主机名)

代码语言:javascript
复制
20 daysrver  
24 daysrver  
318 daysver 
864 dayserv  
442 dayserv  

所以我把服务器变量放在最后,它看起来好多了,我可以提取它,并在excel中使用它。非常感谢Jdamian!

代码语言:javascript
复制
 for host in $(cat servers.txt); do nstats $host -H | awk -v server="$host" 'BEGIN {IFS="\t"} {print $7,$8,server}'; done

 20 days linux_server1
 24 days linux_server2
 318 days windows_server1
 864 days windows_server2
 442 days windows_server3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26711525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档