2017-07-27 45 views
0

我有DDL文件,然后使用命令cat employee.sql | grep -i 'TABLE'提取表名

使用grep命令我能提取低于线DDL

CREATE TABLE TEMP_EMPLOYEE(
     ID VARCHAR(255), 
     NAME VARCHAR(150), 
     ADDRESS VARCHAR(150), 
     STREET VARCHAR(150), 
     SUBURB VARCHAR(100), 
     STATE VARCHAR(100) 
     ); 

CREATE TABLE TEMP_EMPLOYEE(

我想从上面的字符串中进一步提取正好的TABLE名称。有人能帮助吗?我使用sed但打印相同的字符串。

+1

添加ddl提取样本 – vkrams

回答

4

我建议使用GNU的grep:

grep -Po 'CREATE TABLE \K[^(]*' employee.sql 

或GNU sed的:

sed -n 's/CREATE TABLE \(.*\)(/\1/p' employee.sql 

或AWK:

awk -F '[(]' '/CREATE TABLE/ {print $3}' employee.sql 

输出:

 
TEMP_EMPLOYEE 
+0

该sed不是GNU特有的,它可以在任何地方工作。 –