O seguinte script perl converte a entrada em campos separados por tabulações, contando com o conhecimento de que os dois primeiros campos têm apenas uma "palavra" cada e os campos restantes têm duas "palavras" cada. A saída disso é então canalizada para column -s $'\t' -t
É um método muito desajeitado e de força bruta, mas funciona.
#! /usr/bin/perl
use strict;
while(<>) {
my (@F, @fields, $i);
@F=split;
$fields[0] = $F[0] ;
$fields[1] = $F[1] ;
for $i (0..4) {
$fields[$i + 2] = $F[$i*2 + 2] . ' ' . $F[$i*2 + 3];
}
print join("\t",@fields),"\n";
}
É usado assim:
$ ./bandwidth.pl bandwidth.txt | column -s $'\t' -t
Source Destination Maximum To Maximum From Average Total Average To Average From
(10.10.10.21) (192.168.123.122) 18.90 Kbps 0 bps 131 bps 131 bps 0 bps
(10.10.10.22) (192.168.123.122) 10.88 Kbps 0 bps 23 bps 23 bps 0 bps
(10.10.10.23) (192.168.123.123) 10.88 Kbps 0 bps 23 bps 23 bps 0 bps
(192.168.123.123) (192.52.168.123) 0 bps 22.84 Kbps 1.17 Kbps 0 bps 1.17 Kbps
(192.168.123.124) (192.52.168.123) 0 bps 10.87 Kbps 19 bps 0 bps 19 bps
BTW, este é um bom exemplo de por que nunca é uma boa ideia usar um delimitador (por exemplo, espaço) que também esteja nos campos delimitados. Isso apenas torna as coisas mais difíceis do que precisam ser ... e não há uma maneira confiável de distinguir entre delimitadores e conteúdos de campo que não requeiram conhecimento prévio do conteúdo e da estrutura do arquivo.