Sed для регулярного выражения имен столбцов - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть лог-файл SQL с множеством операторов SELECT с множеством столбцов.Я хочу заменить имена столбцов на *.

Итак

хотите изменить SELECT T.A, T.B, T.B, T.C FROM TABLE T на SELECT T.* FROM TABLE T

, чтобы я мог

s/T\.[A-Z_]*//g

получить имена столбцов T. и заменитьих ни с чем.

s/T\.[A-Z_]*/T.*/g

Будет делать ...

SELECT T.*, T.*, T.*, T.*

вместо

SELECT T.*

Так как мне захватить все между SELECT и FROM и затем заменить его наT. *?

Спасибо

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Лучшим подходом будет использование заполнителя для псевдонима, если возможно, чтобы псевдоним отличался от буквы T:

sed -r 's/([[:alnum:]_]+)\.[^ ,]+(, *\1\.[^ ,]+)+/\1.*/g' file
0 голосов
/ 15 ноября 2018

Вы можете попробовать:

sed 's/ \([A-Z]\.\).*\(FROM.*\)/ \1* \2/g'

выход

SELECT T.* FROM TABLE T
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...