Невозможно написать правильное регулярное выражение для удаления нескольких пробелов - PullRequest
1 голос
/ 15 февраля 2011
$ echo "Anirudh   Tomer" | sed 's/ +/ /g'
Anirudh   Tomer

Я ожидал, что это уберет эти 3 пробела между Анирудом и Томером и даст мне результат как "Anirudh Tomer"

Я новичок.Заранее спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 15 февраля 2011

Вам необходимо включить расширенную поддержку регулярного выражения sed с флагом -r.

echo "Anirudh   Tomer" | sed -r 's/ +/ /g'

В расширенных регулярных выражениях метасимволы ?, + и | нельзя экранировать (см. Википедия ).Метасимвол * работает, потому что он относится к основным регулярным выражениям .

1 голос
/ 15 февраля 2011

Подобно регулярному выражению VIM, вам нужно выйти из квантификатора + с обратной косой чертой:

sed 's/ \+/ /g'

0 голосов
/ 05 ноября 2013
echo "Anirudh   Tomer" | tr -s ' '
...