tr
- это все или ничего; он заменит все вхождения выбранных символов, независимо от контекста. Для замены регулярных выражений посмотрите на sed
- вы даже включили это в теги своего вопроса, но, похоже, вы не исследовали, как это может быть полезно?
sed 's/\(.\)\1/\1/g' test.txt
Точка соответствует любому символу; чтобы ограничить только согласными, измените его на [b-df-hj-np-tv-xz]
или что-либо еще имеющее смысл (может быть расширено, чтобы включить верхний регистр; возможно, включить символы с акцентом?) на grep
без -E
(отсюда и все обратные слеши); хотя некоторые реализации sed
также поддерживают эту опцию для выбора расширенного диалекта регулярных выражений POSIX.
Ни sed
не tr
не требуется cat
для чтения стандартного ввода для них (хотя tr
неясно делает не принимать аргумент имени файла). См. Также тангенциально Бесполезное использование кошки?