예를 들어:
CREATE TABLE SSS.ACTIVITY (
OWNING_ID INTEGER NOT NULL ,
ACTIVITY_TYPE FOR COLUMN ACTIV00001 VARCHAR(50) CCSID 37 NOT NULL ,
CAMPAIGN_TYPE FOR COLUMN CAMPA00001 VARCHAR(50) CCSID 37 NOT NULL ,
COMPLETED TIMESTAMP NOT NULL , "COMMENT" VARCHAR(1000) CCSID 37 DEFAULT NULL ,
FOLLOWUP_DATE FOR COLUMN FOLLO00001 DATE DEFAULT NULL ,
;
CREATE TABLE SSS.ADDRESS (
"ID" INTEGER NOT NULL ,
CITY VARCHAR(30) CCSID 37 DEFAULT NULL ,
COUNTRY VARCHAR(30) CCSID 37 DEFAULT NULL ,
ADDRESSLINE1 FOR COLUMN ADDRE00001 VARCHAR(30) CCSID 37 DEFAULT NULL ,
ADDRESSLINE2 FOR COLUMN ADDRE00002 VARCHAR(30) CCSID 37 DEFAULT NULL ,
;
위의 예에는 두 개의 테이블이 있습니다. 테이블 이름과 CCSID라는 단어가 포함된 행을 인쇄하는 것과 같은 출력이 필요합니다.
답변1
이 시도앗:
$ awk '$1=="CREATE" && $2="TABLE"{table=$3} /CCSID/ && \
table{print "table " table, ":", $0}' l
산출:
table SSS.ACTIVITY : ACTIVITY_TYPE FOR COLUMN ACTIV00001 VARCHAR(50) CCSID 37 NOT NULL ,
table SSS.ACTIVITY : CAMPAIGN_TYPE FOR COLUMN CAMPA00001 VARCHAR(50) CCSID 37 NOT NULL ,
table SSS.ACTIVITY : COMPLETED TIMESTAMP NOT NULL , "COMMENT" VARCHAR(1000) CCSID 37 DEFAULT NULL ,
table SSS.ADDRESS : CITY VARCHAR(30) CCSID 37 DEFAULT NULL ,
table SSS.ADDRESS : COUNTRY VARCHAR(30) CCSID 37 DEFAULT NULL ,
table SSS.ADDRESS : ADDRESSLINE1 FOR COLUMN ADDRE00001 VARCHAR(30) CCSID 37 DEFAULT NULL ,
table SSS.ADDRESS : ADDRESSLINE2 FOR COLUMN ADDRE00002 VARCHAR(30) CCSID 37 DEFAULT NULL ,