Подсчитать результаты поиска grep?

Скажем, у меня есть такой список:

8
382.34.6
sally
sally
8
923
183.3.3
183.3.3
183.3.3
8

И я хочу подсчитать количество повторений каждого уникального значения и получить вывод, подобный этому:

8 3
382.34.6 1
sally 2
923 1
183.3.3 3

Какую команду мне нужно выполнить, чтобы сделать это? Если это имеет значение, список приходит из поиска grep.

2
задан 31 May 2015 в 09:21

4 ответа

Попробуйте это:

sort file | uniq -c | awk '{print $2,$1}'

Вывод:

183.3.3 3
382.34.6 1
8 3
923 1
sally 2
0
ответ дан 31 May 2015 в 09:21

Вы могли подать список до | sort | uniq -c | sort -n, Как это:

echo -e "8\n382.34.6\nsally\nsally\n8\n923\n183.3.3\n183.3.3\n183.3.3\n8" | \
sort | uniq -c | sort -n
      1 382.34.6
      1 923
      2 sally
      3 183.3.3
      3 8

, Если Вы хотите количества после значений, Вы могли бы добавить | awk '{print $2,$1}'

0
ответ дан 31 May 2015 в 09:21

Одна опция состоит в том, чтобы использовать awk следующим образом: создайте ассоциативный массив, включенный объектом, который будет считаться, и увеличьте его каждый раз, когда тот же объект читается; в конце входа выполните итерации по массиву и распечатайте ключи и количества:

your grep command | awk '{a[$0]++;next;}; END{for (i in a) print i,a[i];}'

Возможное преимущество состоит в том, что Вы можете делать сопоставление с образцом непосредственно в awk, отказ grep в целом т.е.

awk '/your regex/{a[$0]++;next;}; END{for (i in a) print i,a[i];}'
2
ответ дан 31 May 2015 в 09:21

Попробуйте это

stuff=(apple,boat,chicken)
for (i=0; i<${#stuff}; i=i+1); do
echo INPUT | grep ${stuff[i]} | wc
done

ВВЕЛО значение текст искать. Также заполните массив со своими словами.

0
ответ дан 31 May 2015 в 09:21

Другие вопросы по тегам:

Похожие вопросы: