>

아래에서 직면하고있는 어려운 문제가 있습니다

파일에 아래 텍스트가 있습니다 :

create table "ctronsys".activity_codes
(
   code_list_id varchar(8),
   code_id varchar(10),
   record_type varchar(1),
   active_status_ind varchar(1),
   security_level varchar(1),
   short_description varchar(10),
   long_description varchar(30),
   record_class varchar(1),
   owner_id varchar(4),
   modify_user_id varchar(3),
   modify_date date,
   create_user_id varchar(3),
   create_date date
) in datadbs extent size 16 next size 16 lock mode row;

제 목표는 텍스트 파일에서 아래 줄을 grep하는 것입니다 :

create table "ctronsys".activity_codes

위를 사용하여 아래 줄을 검색하십시오.

) in datadbs extent size 16 next size 16 lock mode row;

아래 검색 할 줄 수는 테이블 구조에 따라 다르지 않습니다

아래 명령을 사용하면 awk를 사용하여 grepped line 위의 한 줄에 열을 인쇄 할 수 있지만 전체 줄을 인쇄하고 싶지만 그 줄 안에 단일 열만 인쇄합니다.

cat table_structure | awk -v key="datadbs" '/^create/ {val=$3} $3 == key {print val;}'

  • 답변 # 1

    awk 사용 :

    awk 'BEGIN { FS="\n[()]"; RS=";" } /^create table "ctronsys".activity_codes/ { print $NF }' file
     in datadbs extent size 16 next size 16 lock mode row
    
    

    파일 내용을 ; 로 나눕니다. 분리 된 레코드. 각 레코드는 ( 를 기준으로 필드로 나뉩니다.  또는 )  줄의 시작 부분에.

    파일을 읽을 때 첫 번째 레코드는이 특정 파일의 전체 내용이됩니다.

    해당 레코드의 첫 번째 필드는

    create table "ctronsys".activity_codes
    
    

    두번째 필드는

      code_list_id varchar(8),
       code_id varchar(10),
       record_type varchar(1),
       active_status_ind varchar(1),
       security_level varchar(1),
       short_description varchar(10),
       long_description varchar(30),
       record_class varchar(1),
       owner_id varchar(4),
       modify_user_id varchar(3),
       modify_date date,
       create_user_id varchar(3),
       create_date date
    
    

    마지막 필드는

    in datadbs extent size 16 next size 16 lock mode row
    
    

  • 이전 ssh - 다른 사용자로 rsync
  • 다음 ubuntu - serverjs 파일을 편집 중입니다 (나노 242, PID xxxx를 사용하여 루트로) 계속하다?