LinuxForum.Fans
Тема

Shell-процедура. Поиск омонимов (одинаковых слов)

Автор: qwerty 25 сообщений 9580 просмотров
#270115
Lupo Alberto написал:
lupo@gentoo-laptop /tmp % wgetpaste test.txt
Your paste can be seen here: http://bpaste.net/show/40574/

н-да. тут проблемма в разбиении на слова. надо изменить код так что бы он правильно разбивал текст на отдельные слова, будем думать.

#270173
"moshell" написал:
cat slovo.test | tr ' ' '\n' | sed 's/[\., ]//' | sed 's/[)]//' | sed 's/(//' | sort | grep "." > omonimys_temp cat omonimys_temp | uniq -c | sed -e 's/^ *//' > tmp

man mktemp

"wlad.bologov" написал:
н-да. тут проблемма в разбиении на слова. надо изменить код так что бы он правильно разбивал текст на отдельные слова, будем думать.

вообще-то для этого имеются метасимволы \b (граница слова) \< (левая граница) и \> (правая граница)
Кроме того имеется метасивол \w (словообразующий символ, это любая буква, подчерк, и цифры), и \W (не словообразующий символ)
Таким образом, что-бы стереть все неслова можно воспользоваться например выражением s/\>\W*\</ /g, которое заменит все промежутки между словами на пробел. В строке останутся лишь слова, разделённые пробелами. Для sed это работает и с русскими буквами/словами.

#270183
drBatty написал:
[quote="moshell"]cat slovo.test | tr ' ' '\n' | sed 's/[\., ]//' | sed 's/[)]//' | sed 's/(//' | sort | grep "." > omonimys_temp cat omonimys_temp | uniq -c | sed -e 's/^ *//' > tmp

man mktemp

"wlad.bologov" написал:
н-да. тут проблемма в разбиении на слова. надо изменить код так что бы он правильно разбивал текст на отдельные слова, будем думать.

вообще-то для этого имеются метасимволы \b (граница слова) \< (левая граница) и \> (правая граница)
Кроме того имеется метасивол \w (словообразующий символ, это любая буква, подчерк, и цифры), и \W (не словообразующий символ)
Таким образом, что-бы стереть все неслова можно воспользоваться например выражением s/\>\W*\</ /g, которое заменит все промежутки между словами на пробел. В строке останутся лишь слова, разделённые пробелами. Для sed это работает и с русскими буквами/словами.[/quote]
Спасибо, полезная информация. В мануалах по sed я такого не видел.

#270187
wlad.bologov написал:
Спасибо, полезная информация. В мануалах по sed я такого не видел.

имхо легче (хотя все равно трудно) заюзать доктора и другие ресурсы инета, чем начать изучать sed в man-пагере.

после получения необходимых знаний можно уже и маны почитать

Войдите или зарегистрируйтесь, чтобы ответить.