Вставьте одинарные кавычки в текстовый файл для использования в качестве SQL-запроса, который следует за открытыми скобками с использованием sed

На самом деле есть две разные настройки.Тот, который вы описали в своем вопросе, Ctrl + Shift + M или Настройки> Показать меню , предназначен только для текущего окна.

Вы можете навсегда отключить строку меню для вновь созданных окон, сняв флажок Настройки> Настроить Konsole> Общие> Показывать строку меню по умолчанию или изменив / добавив

[KonsoleWindow]
ShowMenuBarByDefault=false

в ~ / .config / konsolerc

1
23.05.2016, 19:27
3 ответа

Вы также можете сделать это с помощью цикла:

sed -e ':top' -e 's/\([(,]\)\([^),'\'']\{1,\}\)\([),]\)/\1'"'\2'"'\3/;t top'

Или, используя -E:

sed -E -e ':top' -e "s/([(,])([^),']+)([),])/\1'\2'\3/;t top"
3
27.01.2020, 23:13

Если в вашем файле есть только предложение WHERE, как описано в вашем сообщении, то это должно быть сделано:

$ sed -r "s/(\(|,)([^ ),]+)(\)|,)/\1'\2'\3/g" <Filename>
where c1 in ('a') and c2 in ('a',b,'c') and c3 in ()

Если ваш файл заполнен другими данными, такими как остальная часть этого оператора SQL, или несколькими операторами SQL, тогда это может мешать другому тексту в этом файле. Поскольку sed не имеет функции просмотра назад / вперед, вы можете рассмотреть более безопасную альтернативу в perl (если ваши предложения WHERE находятся в отдельных строках от остальной части каждого оператора SQL):

$ perl -ne "s/(\(|,)([^ ),]+)(\)|,)/\1'\2'\3/g if /where/; print;" <Filename>
where c1 in ('a') and c2 in ('a',b,'c') and c3 in ()
1
27.01.2020, 23:13
sed -r "s/,/','/g; s/\(([^)]+)\)/('\1')/g"

Давайте посмотрим, как это изменит введенные вами данные:

where c1 in (a) and c2 in (a,b,c) and c3 in ()

Во-первых, запятые заключены в кавычки ( s /, / ',' / g ) :

where c1 in (a) and c2 in (a','b','c) and c3 in ()

Затем мы добавляем кавычки внутри непустых скобок ( s / \ (([^)] +) \) / ('\ 1') / g ):

where c1 in ('a') and c2 in ('a','b','c') and c3 in ()

… что является желаемый результат.

Будьте осторожны, так как это регулярное выражение может влиять на другие строки нежелательным для вас образом.

3
27.01.2020, 23:13

Теги

Похожие вопросы