Поместите комментарии в отдельные строки конфигурации.
Комментарий в конце строки заставляет readline
молча игнорировать всю строку , если в противном случае строка была бы допустимой.
В руководстве действительно сказано:
Lines beginning with a ‘#’ are comments.
Здесь не говорится, что комментарий приведет к игнорированию допустимой строки конфигурации.
Это странно, потому что строка:
set foobar on # baz
Результаты в:
readline: /home/ravi/.config/readline/inputrc: line 34: foobar: unknown variable name
Это означает, что строки с #
в конце действительно анализируются на достоверность. Они просто игнорируются, если в противном случае они были бы действительными.
Вы можете использовать awk:
... | awk '{seen[$0]++} !(NR % 10) {print "======"; for (i in seen) print seen[i], i}'
Это будет вести подсчет дубликатов(seen[$0]++
)и печатать их через каждые десять входных строк(!(NR % 10)
). Например:
% % while sleep 1; do echo $((RANDOM % 10)); done | awk '{seen[$0]++} !(NR % 10) {print "======"; for (i in seen) print seen[i], i}'
======
1 0
1 1
3 3
1 6
2 7
2 9
======
3 0
3 1
1 2
3 3
1 4
2 5
2 6
3 7
2 9
======
3 0
3 1
2 2
3 3
2 4
5 5
4 6
3 7
2 8
3 9
...
watch -n <seconds> "sort <file> | uniq -c"
Должно быть о том, что вы хотите. Выполняет sort | uniq
каждые <seconds>
.
Можно сделать с помощью короткого perl
скрипта, такого как:
#! /usr/bin/perl
system qw(tput sc); # save cursor
$rc = `tput rc; tput ed`; # restore cursor and erase down
sub report {
print $rc;
print "$_: $c{$_}\n" for sort {
($c{$b} <=> $c{$a}) || ($a cmp $b)
} keys %c;
STDOUT->flush;
alarm 1;
}
$SIG{ALRM} = \&report;
alarm 1;
while (<>) {
chomp;
$c{$_}++;
}
report;