Замена пробела подчеркиванием только в определенных позициях, используя sed
У меня есть некоторые CREATE
заявление, как
CREATE TABLE [a b]{ }
CREATE TABLE [anything everything]{}
Теперь я хочу заменить пробел в скобках _
Я пробовал использовать CREATE TABLE [a_b]{ }
CREATE TABLE [anything_everything]{ }
, но я не могу сохранить строки.
У вопроса есть решение - Посмотреть?

Вы уже что-то пробовали? Пожалуйста, поделитесь!
Источник
Ответы - Замена пробела подчеркиванием только в определенных позициях, используя sed / Replacing space with underscore at specific positions only, using sed

29.01.2020 05:41:07
Минимальный СЭД:
sed 's/\(\[[^] ]*\) /\1_/'
Если вы можете найти более одного пробела между скобками:
sed ':a;s/\(\[[^] ]*\) /\1_/;ta'
И как прокомментировал Гленн Джекман , для версии sed
точка с запятой не работает так, как ожидалось. Но вы могли бы написать что-то вроде:
sed -e ':a' -e 's/\(\[[^] ]*\) /\1_/' -e 'ta'
Но я повторяю: вы должны использовать этот цикл ветвления только в том случае, если вы ожидаете найти более одного пробела (одной замены) между скобками ( Create table [more than one space] {
).
Помочь в развитии проекта: