我正在尝试提取文件中第一个与其匹配的右括号之间的文本。
输入
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