Замените двойные согласные буквы на одну с помощью команды sed

Замените двойные согласные буквы на одну с помощью команды sed

02.02.2020 10:05:57 Просмотров 18 Источник

Как заменить двойные согласные только одной буквой, используя sedнаходят слова, следующие за двумя одинаковыми согласными в шаблоне строки, но как я могу заменить их только одним вхождением буквы?

Я пытался

grep -E '(.)\1+'
У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/60029569/replace-double-consonant-letters-with-one-using-sed-command#comment106164393_60029569
Что вы искали и что нашли? Что вы пробовали, и как вам это не удалось?
https://stackoverflow.com/questions/60029569/replace-double-consonant-letters-with-one-using-sed-command#comment106164534_60029569
кошачий тест.txt / head | tr-s ' [^AEUIO\n]' '?'#все слова в шапках кошачий тест.txt / head | tr-s ' [^AEUIO\n]' '?'

Ответы - Замените двойные согласные буквы на одну с помощью команды sed / Replace double consonant letters with one using sed command

Является ответом!
tripleee

02.02.2020 10:53:20

tr-это все или ничего; он заменит все вхождения выбранных символов, независимо от контекста. Для замены регулярных выражений, посмотрите на sed- вы даже включили это в теги вашего вопроса, но вы, кажется, не исследовали, как это может быть полезно?

sed 's/\(.\)\1/\1/g' test.txt

Точка соответствует любому символу; чтобы ограничиться только согласными, измените ее на [b-df-hj-np-tv-xz]или что-то другое (возможно, расширить, чтобы включить верхний регистр; возможно, включить символы с ударением?)

Диалект регулярных выражений, понятный sed, больше похож на тот, который понимается grepбез -E(отсюда все обратные косые черты); хотя некоторые sed, ни sedне нуждаются trдля чтения стандартного ввода для них (хотя catнеясно не принимает аргумент имени файла). Смотрите по касательной также бесполезное использование кошки?

https://stackoverflow.com/questions/60029569/replace-double-consonant-letters-with-one-using-sed-command/60029984#comment106166352_60029984
Хорошие детали.. хотя бы строго соблюдать требования по “хорошему".
KamilCuk

02.02.2020 10:55:23

Сопоставьте один согласный, запомните его в \( \), затем снова сопоставьте с \1и замените его на себя.

sed 's/\([bcdfghjklmnpqrstvxzBCDFGHJKLMNPQRSTVXZ]\)\1/\1/'
Закрыть X