我通过运行以下命令来生成此/ temp / test文件

for i in `cat /tmp/hosts` ; 
do ssh $i -t "echo $i;sudo /usr/sbin/ethtool -S eth1 | grep   discards"; 
done > /tmp/test 

这是通过管道传输到test / tmp / test文件的命令的输出
yyyx01 
     rx_ftq_discards: 0 
     rx_discards: 0 
     rx_fw_discards: 0 
yyyx02 
     rx_ftq_discards: 0 
     rx_discards: 0 
     rx_fw_discards: 45 
yyyx03 
     rx_ftq_discards: 0 
     rx_discards: 0 
     rx_fw_discards: 46 
yyyx04 
     rx_ftq_discards: 0 
     rx_discards: 0 
     rx_fw_discards: 47 
yyyx05 
     rx_ftq_discards: 0 
     rx_discards: 0 
     rx_fw_discards: 34022 

我需要输出如下所示,以便可以将其拉入Excel工作表
yyyx01   0   0  0  0 
yyyx02   0   0  0  45 
yyyx03   0   0  0  46 
yyyx04   0   0  0  47 

谁能帮忙用代码实现这一目标?我可以将输出转储到临时文件中,如果无法通过SSH命令行完成,则可以使用命令对其进行操作

预先谢谢你

请您参考如下方法:

$ awk '{printf "%s%s", $NF, (NR%4 ? OFS : ORS)}' file 
yyyx01 0 0 0 
yyyx02 0 0 45 
yyyx03 0 0 46 
yyyx04 0 0 47 
yyyx05 0 0 34022 

如果要使用制表符或逗号或其他任何方式来代替字段之间的空白字符,只需设置OFS:
$ awk -v OFS=',' '{printf "%s%s", $NF, (NR%4 ? OFS : ORS)}' file 
yyyx01,0,0,0 
yyyx02,0,0,45 
yyyx03,0,0,46 
yyyx04,0,0,47 
yyyx05,0,0,34022 
 
$ awk -v OFS='\t' '{printf "%s%s", $NF, (NR%4 ? OFS : ORS)}' file 
yyyx01  0       0       0 
yyyx02  0       0       45 
yyyx03  0       0       46 
yyyx04  0       0       47 
yyyx05  0       0       34022 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!