Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: marihuan_new в Nov 04, 2006, 17:16



Титла: Баш скрипт и sort
Публикувано от: marihuan_new в Nov 04, 2006, 17:16
Здравейте,
интересува при баш как мога даден файл, съдържащ по една дума на ред и n на брой редове, мога да го отпечатам към стандартен изход, като е сортиран в ред според повторенията на дадена дума във файла?
Идеята ми е да използвам масив и сорт или има и по елегантно решение?!
Мерси предварително! :)


Титла: Баш скрипт и sort
Публикувано от: Hapkoc в Nov 04, 2006, 18:26
Не съм сигурен, че те разбрах. Можеш или да си поясниш въпроса или да пробваш това:

cat file | sort | uniq

и да кажеш дали ти върши работа.


Титла: Баш скрипт и sort
Публикувано от: VladSun в Nov 06, 2006, 00:09
Скрипта на Наркос е ОК, обаче трябва да се добави и още един sort  и "парсер" в края:

cat file | sort | uniq | sort | awk '{print $2}'





Титла: Баш скрипт и sort
Публикувано от: Hapkoc в Nov 06, 2006, 09:55
VladSun, не ти разбрах идеята...

Втория sort не би трябвало да промени подредбата, т.к. още след първия ще са подредени, а ако има по една дума на ред не се сещам какво ще отпечата awk на екрана...


Титла: Баш скрипт и sort
Публикувано от: marihuan_new в Nov 06, 2006, 12:16
Stana! mersi i na dvamata!


Титла: Баш скрипт и sort
Публикувано от: VladSun в Nov 06, 2006, 13:13
Цитат (Hapkoc @ Ноември 06 2006,09:55)
VladSun, не ти разбрах идеята...

Втория sort не би трябвало да промени подредбата, т.к. още след първия ще са подредени, а ако има по една дума на ред не се сещам какво ще отпечата awk на екрана...

Няма начин да я разбереш :)
И аз не бих я разбрал ;)
Пропуснал съм да добавя -c параметъра на uniq - т.е. става:
cat file | sort | uniq -c | sort | awk '{print $2}'

uniq -c добавя броя на повторенията на първа позиция и думата на втора, след това сортираме по брой повторения и вадиме само втората позиция.
Извинявам се за подвеждането.


Титла: Баш скрипт и sort
Публикувано от: Hapkoc в Nov 06, 2006, 13:21
Аааа, добре. :)
Така става.


Титла: Баш скрипт и sort
Публикувано от: cichomitiko в Jan 09, 2007, 13:08
} Пропуснал съм да добавя -c параметъра на uniq -
} т.е. става:
} cat file | sort | uniq -c | sort | awk '{print $2}'

... ili (bez izlishnoto "cat", s po-malko pipes):

cut -d' ' -f8 <(sort <(sort file|uniq -c))


Pozdravi
Dimitar





Титла: Баш скрипт и sort
Публикувано от: alabal в Jan 09, 2007, 20:50
Братко, cichomitiko!
Прочети тази тема и пиши на кирилица. Редактирай горното съобщение на кирилица - не го изтрих, само защото приех, че вероятно има полезна информация за някого.


Титла: Баш скрипт и sort
Публикувано от: radoulov в Jan 13, 2007, 12:16
Цитат (alabal @ Ян. 09 2007,21:50)
Братко, cichomitiko!
Прочети тази тема и пиши на кирилица. Редактирай горното съобщение на кирилица - не го изтрих, само защото приех, че вероятно има полезна информация за някого.

Извинявам се.
Не мога да редактирам горното съобщение, защото нямам вече такава опция (логнат като cichomitiko),
затова направих нова регистрация.