Да, это работа для tee
:
rpm -qa | tee file | wc -l
Перенаправление оболочки (>
) - это всего лишь перенаправление, и вы можете одновременно направлять выходной поток только в одно место. На этом этапе |
нечего видеть. tee
создан именно для этой цели, когда вы хотите разделить поток на две части, одна идет в файл, а другая все еще находится в стандартном выводе. Приведенная выше команда делает именно то, что вы пытались сделать.
xargs
здесь не поможет.
Что бы я сделал:
#!/usr/bin/perl
use strict;
my %h;
while (<>) {
$h{$_}++ for split /\s+/;
END{
for (sort { $h{$b} <=> $h{$a} } keys %h){
print $_, "=", $h{$_};
print "\n";
}
}
}
так:
./script input_file