LINUX.ORG.RU

Вот вы зарегались на форуме и спрашиваете какую-то очередную компьютерную дичь. Очевидно, у вас есть электричество, сам компьютер, и хоть какое-то образование. То есть вы не русский Маугли, воспитанный оленями. Поэтому научитесь оформлять сообщения.

anonymous
()

[a-z-]{2,} это:

  • [a-z-][a-z-] или
  • [a-z-][a-z-][a-z-] или
  • [a-z-][a-z-][a-z-][a-z-] или
  • и т.д.

Все строчки файла подходят под третий вариант.

Дальше надо подумать, как этого можно избежать и сделать повторения только конкретного совпадения (это слово можно считать подсказкой).

xaizek ★★★★★
()

тебе надо «убрать повторяющиеся буквы в слове» или «убрать слова с повторяющимися буквами в слове»?

Tanger ★★★★★
()
Ответ на: комментарий от Vera

Мне кажется, grep для этого не лучший инструмент. По крайней мере, простого (да и сложного) решения с ним я не придумал.
Кроме того, регулярное выражение для слова с повторяющимися буквами - это не «[a-z-]{2,}», а длинное-длинное выражение, начинающееся на «aa|bb|cc|dd|ee|ff|gg|», как мне кажется.

PeleWin
()
Ответ на: комментарий от PeleWin

Не, есть вариант.

ладно, смилостивлюсь над вами и ТС-ом, один фиг ему ещё про пробелы подумать придётся, а кому-то может и пригодится...

echo 'abcd aabc abbc' | grep -E "[a-z]*([a-z])\1[a-z]*"

ах да внимательно перечитав задание, я понял, что, ТС-у надо кое что поправить, но что я говорить не буду

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 3)
Ответ на: комментарий от xaizek

Вообще не видел нормального руководства по регуляркам (grep тут или не греп дело десятое), если честно. С удовольствием бы почитал, а то всё какие-то кривые велосипеды клепаю...

peregrine ★★★★★
()
Ответ на: комментарий от dexpl

Слабовато, особенно если с нулевого уровня ковыряться (а мне надо кое-кого регуляркам подучить, кто вообще в них ни бум-бум, да и самому основу чекнуть не повредит, я 10 минут тупил над заданием ТС-а). В идеале вообще с задачками бы попрактиковаться на чём-то вроде того что у ТС-а, а то приходится всякую дичь регулярками парсить постоянно... Иногда тяжело бывает.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от Vera

вот если бы вы использовали форматирование, то было бы понятнее. Если файл выглядит вот так

abcd
aabc
abbc

то команда возможно может быть такой

grep -Pv '(\w)\g1+' /tmp/test.txt
anonymous
()
Ответ на: комментарий от peregrine

Ничего лишнего нет

У тебя же на опции -o. Нет необходимости добавлять шаблон начала и конца слова.

у ТС-а задание другое на самом деле

ну так v..

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

А ты проверь. Ну или до меня уже не доходит...

echo 'abcd aabc abbc' | grep -Eo "[a-z]*([a-z])\1[a-z]*"
aabc
abbc
echo 'abcd aabc abbc' | grep -Eo "([a-z])\1[a-z]*"
aabc
bbc
echo -e 'abcd\naabc zxy\nabbc' | grep -Eo "[a-z]*([a-z])\1[a-z]*"
aabc
abbc
так понятнее, что не так? ТС-у тоже подумать мешает на последней команде... Или ты про
grep -Ev "[a-z]*([a-z])\1"

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

У тебя же на опции -o

опечатка. Вместо на хотел написать нет.

Да, -o нужно, если в одной строке может быть несколько слов.

Но ТСу нужно исключить слова с дублями. И -v в случае нескольких слов на строке не поможет.

Но тогда можно делать так echo 'abcd aabc abbc' | grep -Eo "[a-z]+" | grep -vE "([a-z])\1"

Tanger ★★★★★
()
Ответ на: комментарий от Tanger

Ну тут надо у ТС-а уточнять что ему надо. Я как раз думаю что всю строку сносить, тогда -v хватит, если не так, то можно ещё подумать, т.к. если без пайпа можно, то так быстрее будет.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Я как раз думаю что всю строку сносить

Ага. Но тогда [a-z]* не обязательны:

$ echo -e 'abcd\naabc\nabbc' | grep -vE "([a-z])\1" | md5sum 
f5ac8127b3b6b85cdc13f237c6005d80  -
$ echo -e 'abcd\naabc\nabbc' | grep -vE "[a-z]*([a-z])\1[a-z]*" | md5sum 
f5ac8127b3b6b85cdc13f237c6005d80  -
Tanger ★★★★★
()
Ответ на: комментарий от Tanger

Да, не привычен я к grep. Привык для Python-а и C# регулярки писать, там нет -v.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Я всё никак не прочитаю книгу Mastering Regular Expressions, которую уже посоветовали. Из статей ничего не сохранено, но есть разные сайты.

Здесь обучение:

А здесь задачи:

Тут сайты для отладки для разных диалектов:

xaizek ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.