LINUX.ORG.RU

Удаление пробелов в предложении на Bash используя Регулярное выражение

 ,


0

1

У меня есть один файл в котором содержится два предложения

Планета(тут три пробела) большая

Красивая.(и тут три пробела) Огромная

Надо убрать повторяющиеся пробелы и знаки табуляции. Оставить по одному между словами и по два между предложениями

Пыталась вводить вот это, все равно не получилось. grep -E «[A-Za-z.]| sed '/\s*\s*$/d' file.txt " Как решить эту проблему?

я бы сделал через sed. у него есть режим расширенных регулярок, включается опцией -E. команду бы взял s///, а не d. греп не нужен.

anonymous
()
sed -re's/\.[[:blank:]]*/.  /g;s/[[:blank:]]{2,}/ /g'

Дай-ка угадаю - это безумный препод? Иначе какой смысл делать это на регулярках. Кстати, задание неполное - на что нужно заменить вот такое <space><space><tab><tab>?

P. S. таки lorcode не намного лучше маркдауна - два пробела в inline режутся до одного

DllMain
()
Последнее исправление: DllMain (всего исправлений: 2)
cat f | perl -C7 -pE's/\.\s+/.  /g; s/\b\s+\b/ /g'
perl5_guy ★★★★★
()
Ответ на: комментарий от DllMain

Получилось но 50\50

Планета большая (тут получилось)

Красивая.(тут нужно два пробела,а выводит один пробел) Огромная

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

Красивая.(тут нужно два пробела,а выводит один пробел) Огромная Если встречается точка в консоли должно вывести два пробела

Mirnova_maria
() автор топика

А зачем тут именно регулярки? Обычный линейный проход.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

точнее:

sed -i 's/\([^.\t ]\)\([\t ]\)\+/\1\2/g;s/\(\.[\t ][\t ]\)[\t ]\+/\1/g' file.txt
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.