我正在提取文件中第一个和其匹配右括号之间的文本。awk脚本 - 在括号之间提取文本
输入
CREATE MULTISET TABLE ABCD.EFGH,
NO FALLBACK,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = Default
(ABCK_SK INTEGER NOT NULL,
PRQ VARCHAR(1024) NOT NULL,
RST DECIMAL (12,4) NOT NULL,
LMN CHAR(1) NOT NULL,
OPQ DATE NOT NULL,
PQRS DATE NOT NULL,
TUV INTEGER NOT NULL,
WXY INTEGER NOT NULL
) UNIQUE PRIMARY INDEX ABCK_PI (ABCK_SK)
;
期望输出
ABCK_SK INTEGER NOT NULL,
PRQ VARCHAR(1024) NOT NULL,
RST DECIMAL (12,4) NOT NULL,
LMN CHAR(1) NOT NULL,
OPQ DATE NOT NULL,
PQRS DATE NOT NULL,
TUV INTEGER NOT NULL,
WXY INTEGER NOT NULL
我写了下面的脚本让行数和列数从那里到文本需要被提取,其中,但我无法真正打印输出。任何建议将不胜感激。 感谢
#!/bin/sh
nawk 'BEGIN{startln=0;j=0;i=0;endln=0;startchr=0;endchr=0} {
i=1; while(i<=NF) {
if($i=="(" && startln==0){startchr=i; startln=NR}
if($i==")"){j=j-1}
if($i=="("){j=j+1}
if(j==0){endchr=i;endln=NR;break}
i=i+1}}
END{
print "startln="startln " startchr="startchr " endln="endln " endchr="endchr}' $1
这似乎是对我完美的工作..我只需要将其嵌入我的主要scrpt,并确保它不会在我给它的不同类型的输入失败..非常感谢!从昨天早上起,这让我彻底失败了.. – user973363 2012-07-26 18:37:44