我有包含n个CREATE表查询的文件,我想在unix中提取一些特定的表创建表查询。 对于下面文件中的示例,我只想要提取表xyz的创建表查询。
CREATE TABLE ABC(
a INTEGER NOT NULL,
b INTEGER NOT NULL,
c CHAR(10) NOT NULL,
)
PARTITIONING KEY a USING HASHING
NOT LOGGED INITIALLY
;
ALTER TABLE abc
ADD PRIMARY KEY (a);
CREATE TABLE xyz(
a INTEGER NOT NULL,
b INTEGER NOT NULL,
c CHAR(10) NOT NULL,
)
PARTITIONING KEY a USING HASHING
NOT LOGGED INITIALLY
;
ALTER TABLE xyz
ADD PRIMARY KEY (a);
CREATE TABLE pqb(
a INTEGER NOT NULL,
b INTEGER NOT NULL,
c CHAR(10) NOT NULL,
)
PARTITIONING KEY a USING HASHING
NOT LOGGED INITIALLY
;
ALTER TABLE pqb
ADD PRIMARY KEY (a);
答案 0 :(得分:0)
在下面的文件中,我只想提取表xyz的创建表查询。
您可以简单地使用sed
来打印从CREATE TABLE xyz
到;
的行:
sed -n "/CREATE TABLE xyz/,/;/p" file
或带有参数:
table=xyz
sed -n "/CREATE TABLE $table/,/;/p" file