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

У меня есть текст, который содержит как multi-words, так и подобные диалогу фразы, такие как -hello, и я хочу отделить дефис от слова только в том случае, если он не является частью многословия, то есть дефис не окружен двумя символами ,

Слово может появиться где угодно в предложении, а не только в начале. Пример:

ввод:

multi-media
-hello -oh, hi

желаемый результат:

multi-media
- hello - oh, hi

Можно ли это сделать с помощью sed или awk?

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

Вы можете сделать это с помощью sed следующим образом:

sed -E 's/(^|[^[:alnum:]])-/& /g' yourInputFile

Регулярное выражение (^|[^[:alnum:]])- ищет -, которому предшествует начало строки (^) или что-то, что не 't часть слова ([^[:alnum:]] = , а не буква или цифра, например пробел или запятая).

Строка замены &␣ говорит sed добавитьпробел после того, что мы сопоставили (&).

0 голосов
/ 23 мая 2019

Easy in Vim:

:%s/\(^\|\s\)-/\0 /g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...