从 DDL 文件中提取表名

vkr*_*ams 1 sql unix linux awk sed

我有 DDL 文件并使用 grep 命令我可以使用该命令提取以下行 cat employee.sql | grep -i 'TABLE'

数据线

CREATE TABLE TEMP_EMPLOYEE(
       ID VARCHAR(255),
       NAME VARCHAR(150),
       ADDRESS VARCHAR(150),
       STREET VARCHAR(150),
       SUBURB VARCHAR(100),
       STATE VARCHAR(100)
        );
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE TEMP_EMPLOYEE(

我想从上面的字符串中进一步提取 TABLE 名称。有人可以帮助如何。我用过sed但打印了相同的字符串。

Cyr*_*rus 6

我建议使用 GNU grep:

grep -Po 'CREATE TABLE \K[^(]*' employee.sql
Run Code Online (Sandbox Code Playgroud)

或 GNU sed:

sed -n 's/CREATE TABLE \(.*\)(/\1/p' employee.sql
Run Code Online (Sandbox Code Playgroud)

或 awk:

awk -F '[( ]' '/CREATE TABLE/ {print $3}' employee.sql
Run Code Online (Sandbox Code Playgroud)

输出:

TEMP_EMPLOYEE