Скажем, у меня есть такой список:
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
.
Попробуйте это:
sort file | uniq -c | awk '{print $2,$1}'
Вывод:
183.3.3 3 382.34.6 1 8 3 923 1 sally 2
Вы могли подать список до | 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}'
Одна опция состоит в том, чтобы использовать 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];}'
Попробуйте это
stuff=(apple,boat,chicken)
for (i=0; i<${#stuff}; i=i+1); do
echo INPUT | grep ${stuff[i]} | wc
done
ВВЕЛО значение текст искать. Также заполните массив со своими словами.