AWK 스크립트에 대해 알아보기

AWK 스크립트에 대해 알아보기

플랫 파일 형식:

;metier_code              ;
;-------------------------;

(0 rows affected)
;CRDS_Ptf_No;          ;                                ;                         ;          ;                                ; ;                         ;                         ;               ;               ;               ;                         ;                         ;     ;Status;
;-----------;----------;--------------------------------;-------------------------;----------;--------------------------------;-;-------------------------;-------------------------;---------------;---------------;---------------;-------------------------;-------------------------;-----;------;
;       NULL;ABCD      ;ABHJARS                         ;                         ;ABCD      ;ABCD                            ;Y;                         ;                         ;               ;               ;               ;                         ;                         ;     ;A     ;
;       1234;XEU-ANKD  ;XEU-AJKD                        ;                         ;ABCD      ;ABCD                            ;Y;                         ;                         ;               ;               ;               ;                         ;                         ;     ;A     ;
.
.
;      11745;ANJLDMAOKD;AMKDJ AN DJ JAHF AS CPFVH ACCR  ;NONE                     ;AN DJ JAHA;AN DJ JAHA                      ;Y;NO ANKIO GAP             ;YES AMK SCF              ;               ;               ;               ;                         ;                         ;     ;I     ;
;      11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM   ;NONE                     ;AN DJ JAHA;AN DJ JAHA                      ;Y;NO ANKIO GAP             ;YES AMK SCF              ;               ;               ;               ;                         ;                         ;     ;I     ;

(5436 rows affected)
(return status = 0)

Return parameters:

;           ;
;-----------;
;       5436;


(1 row affected)
;       ;           ;
;-------;-----------;
;grepkey;       5436;

(1 row affected)

다음 스크립트는 플랫 파일의 형식을 지정하는 데 사용됩니다.

awk -F ';' '/^;-----------;/ {start=1;next;}; start==0 {next;}; /^[^;]|^$/ { exit;}; { line_nr++; gsub(" +",""); print line_nr "" $0;}' temp_file > test

다음은 위 스크립트를 사용하여 얻은 올바른 출력입니다.

1;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
2;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
3;NULL;SWAPOLEIL;SWAPOLEIL;;QWERDF;QWERDF;Y;;;;;;;;;A;
.
.
5436;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;

누구든지 파일 형식을 지정하는 데 사용되는 아래 AWK 스크립트를 설명해 줄 수 있습니까?

awk -F ';' '/^;-----------;/ {start=1;next;}; start==0 {next;}; /^[^;]|^$/ { exit;}; { line_nr++; gsub(" +",""); print line_nr "" $0;}' temp_file > test

위 스크립트에서 몇 가지 사항을 이해합니다. 1) /^[^;]|^$/ {exit;}; 줄이 다음으로 시작하지 않으면 처리가 중지됩니다. 2) 선행 줄을 무시합니다.

답변1

한 줄에 하나의 조건으로 형식을 지정하면 Awk 스크립트를 더 쉽게 이해할 수 있습니다.

'/^;-----------;/ {start=1;next;};

";------------;"로 시작하는 줄을 읽을 때 변수 start를 true로 설정한 후 아무것도 인쇄하지 않고 입력의 다음 줄로 이동합니다.

start==0 {next;};

start가 false이면 아무것도 인쇄하지 않고 다음 입력 줄로 이동합니다.

/^[^;]|^$/ { exit;};

또는 null 이외의 문자로 시작하는 줄을 에서 읽으면 ;파일 처리를 중지하고 종료합니다(더 간단한 방법은 !/^;/{exit}).

{ line_nr++; gsub(" +",""); print line_nr "" $0;}

다른 모든 줄의 경우 카운터를 늘리고 줄의 모든 공백을 제거한 다음 카운터와 업데이트된 줄을 인쇄합니다.

답변2

awk -F ';' '/^;-----------;/ {start=1;next;}; start==0 {next;}; /^[^;]|^$/ { exit;}; { line_nr++; gsub(" +",""); print line_nr "" $0;}' temp_file > test그런 것 같아요 nl -w 1 -p -s';' temp_file > test(힌트Google을 통해).

답변3

스크립트는 ;----------;(1.command)로 시작하는 줄에 도달할 때까지 모든 줄(2.command)을 건너뜁니다. 그런 다음 빈 줄이나 ;(3.command)로 시작하지 않는 줄에 도달할 때까지 불필요한 공백(4.command)을 제거하여 다음 줄을 인쇄합니다.

;----------;즉, 및로 구분된 첫 번째 블록(빈 줄 또는 로 시작하지 않는 줄 ;) 을 인쇄합니다 .

관련 정보