특정 단어와 해당 단어가 존재하는 테이블을 사용하여 전체 행을 인쇄하는 것과 같은 출력을 원합니다.

특정 단어와 해당 단어가 존재하는 테이블을 사용하여 전체 행을 인쇄하는 것과 같은 출력을 원합니다.

예를 들어:

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 , 

관련 정보