我通过运行以下命令来生成此/ 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
关于bash - 在主机名后的同一行上打印一行-操作文本脚本linux bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21339612/