переставить элементы столбца и отображать количество - PullRequest
1 голос
/ 01 февраля 2010

У меня есть такой текстовый файл:

i
am 
fine
how
are
you
what
i
how
are

Мне нужен вывод, как показано ниже:

i : 2
am : 1
fine : 1
how : 2
are : 2
you : 1
what : 1

может быть много повторений слов: Как я могу сделать это с помощью сценария оболочки или awk?

Ответы [ 4 ]

4 голосов
/ 01 февраля 2010
sort | uniq -c

Сортирует его, и счетчик по умолчанию перед строкой. Будет ли это работать?

1 голос
/ 01 февраля 2010
awk '{ count[$1]++ }
    END { for (a in count) printf("%s : %d\n", a, count[a]) }' filename

awk имеет ассоциативные массивы, и все переменные инициализируются равными 0, поэтому вышеприведенное работает должным образом.

0 голосов
/ 01 февраля 2010

@ OP, если вы хотите сохранить заказ

awk ' { a[$0]++; d[NR]=$0 }
END{
 for(i=1;i<=NR;i++){
    if( ! (d[i] in p)  ){
        print a[d[i]],d[i]
        p[d[i]]
    }
 }
} ' file

выход

$ ./shell.sh
2 i
1 am
1 fine
2 how
2 are
1 you
1 what
0 голосов
/ 01 февраля 2010

В Perl:

perl -le'while (<>){ chomp; $seen{$_}++}; print map { $_ . " : " . $seen{$_} } keys %seen'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...