Как отфильтровать слова, содержащие повторяющиеся символы? - PullRequest
0 голосов
/ 22 октября 2019

Я работал над этой задачей, которая кажется довольно простой, но я не могу заставить ее работать, несмотря на то, что я читаю человека и гуглю подобные вопросы.

У меня есть файл, содержащий тысячи слов, и янеобходимо отфильтровать слова, оканчивающиеся на 'st', но не содержащие другого повторения 's' или 't', например:

Мороз - это хорошо.

Тост - нет.

Я могу отфильтровать слова с нужным окончанием командой:

grep -e '[s][t]$' .\file

Что я не могу сделать, так это отфильтровать слова, содержащие повторение 's' или 't'.

Я пытался:

grep -E 's{0}'

или перевернутый поиск

egrep -v '(s)\1{0}' .\file

* С этим я получаю только слова, которые вообще не содержат S.

и

egrep -v '(s)\1{1}' .\file

* Этот ничего не делает, так как я получаю слова с повторением символа '.'

Кто-нибудь знает, как я мог передать grep -e '[s][t]$' .\file команда в другое регулярное выражение, которое отфильтровывает слова, содержащие повторение 't' или 's'?

Спасибо.

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете использовать

grep '^[^st]*st$' file

Это вернет строки, которые соответствуют

  • ^ - начало строки
  • [^st]* - 0 или болеесимволы кроме s и t
  • st - st подстрока
  • $ - в конце строки.
...