Если у меня есть текстовый файл со следующим коннетом
red apple
green apple
green apple
orange
orange
orange
Есть ли команда Linux или script, которую я могу использовать для получения следующего результата?
1 red apple
2 green apple
3 orange
Если у меня есть текстовый файл со следующим коннетом
red apple
green apple
green apple
orange
orange
orange
Есть ли команда Linux или script, которую я могу использовать для получения следующего результата?
1 red apple
2 green apple
3 orange
Отправьте его через sort
(чтобы соединить смежные элементы вместе), затем uniq -c
, чтобы дать подсчеты, т.е.:
sort filename | uniq -c
и чтобы получить этот список в отсортированном порядке (по частоте), вы можете
sort filename | uniq -c | sort -nr
Почти то же самое, что и borribles ', но если вы добавите параметр d
в uniq
, он будет показывать только дубликаты.
sort filename | uniq -cd | sort -nr
uniq -c file
и в случае, если файл уже не отсортирован:
sort file | uniq -c
Попробуйте это
cat myfile.txt| sort| uniq
Можете ли вы жить с алфавитом, упорядоченным списком:
echo "red apple
> green apple
> green apple
> orange
> orange
> orange
> " | sort -u
?
green apple
orange
red apple
или
sort -u FILE
-u означает уникальность, а уникальность достигается только путем сортировки.
Решение, сохраняющее порядок:
echo "red apple
green apple
green apple
orange
orange
orange
" | { old=""; while read line ; do if [[ $line != $old ]]; then echo $line; old=$line; fi ; done }
red apple
green apple
orange
и с файлом
cat file | {
old=""
while read line
do
if [[ $line != $old ]]
then
echo $line
old=$line
fi
done }
Последние два удаляют только дубликаты, которые следуют сразу - что подходит вашему примеру.
echo "red apple
green apple
lila banana
green apple
" ...
Будут напечатаны два яблока, разбитые бананом.
cat <filename> | sort | uniq -c
Чтобы просто получить счет:
$> egrep -o '\w+' fruits.txt | sort | uniq -c
3 apple
2 green
1 oragen
2 orange
1 red
Чтобы получить отсортированный счетчик:
$> egrep -o '\w+' fruits.txt | sort | uniq -c | sort -nk1
1 oragen
1 red
2 green
2 orange
3 apple
ИЗМЕНИТЬ
Ага, это не было границ слов, мое плохое. Здесь команда для использования для полных строк:
$> cat fruits.txt | sort | uniq -c | sort -nk1
1 oragen
1 red apple
2 green apple
2 orange