Преобразовать слова после определенного ключевого слова в нижний регистр - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь преобразовать все слова после AS в запросе с помощью сценария оболочки:

SELECT
first_name AS First_Name,
last_name AS Last_Name,
AGE('1990-10-12') AS Person_Age
FROM table1

Мне нужен вывод

SELECT
first_name AS first_name,
last_name AS last_name,
AGE('1990-10-12') AS person_age
FROM table1

Ответы [ 3 ]

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

Использование awk

awk '/AS/ {for (i=1; i<=NF; i++) if ($i == "AS") $(i+1) = tolower($(i+1))} {print}' < infile.sql
0 голосов
/ 27 ноября 2018

Использование Perl

$ cat aswin.sql
SELECT
first_name AS First_Name,
last_name AS Last_Name,
AGE('1990-10-12') AS Person_Age
FROM table1

$ perl -ne ' { s/\bas\b\s+\b(.+?)\b/AS \L\1\E/gi; print } ' aswin.sql
SELECT
first_name AS first_name,
last_name AS last_name,
AGE('1990-10-12') AS person_age
FROM table1
0 голосов
/ 27 ноября 2018

Если у вас есть GNU sed, вы можете использовать \L, расширение s команды , которое преобразует все, что следует за ней, в нижний регистр:

$ sed -E 's/(AS)(.*)/\1\L\2/' infile
SELECT
first_name AS first_name,
last_name AS last_name,
AGE('1990-10-12') AS person_age
FROM table1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...