단일 파일에 포함된 일부 테이블 데이터의 형식은 다음과 같습니다.
;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
.
.
;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;
(5436rowsaffected)
(returnstatus=0)
Returnparameters:
;;
;5436;
(1rowaffected)
;;;
;-------;-----------;
;grepkey;5436;
(1rowaffected)
노트:위 grepkey=5436
(테이블에 있는 레코드 수).
예상되는 출력은 다음과 같습니다.
1;NULL;ABCD;ABHJARS;;ABCD;ABCD;Y;;;;;;;;;A;
2;NULL;XEU-ANKD;XEU-AJKD;;ABCD;ABCD;Y;;;;;;;;;A;
.
.
5436;11744;AMKDIONSKH;AMKDJ AN DJ JAHF AS CPFVH MTM;;QWERDF;QWERDF;Y;;;;;;;;;A;
위 형식의 데이터가 필요합니다. 행 번호 앞에 접두사를 붙이고 테이블의 레코드 수 등 파일 끝에 있는 추가 데이터를 제외하고 싶습니다.
또한 을 사용하고 싶습니다 awk
.
답변1
내가 올바르게 이해했는지 잘 모르겠습니다. 각 줄에 줄 번호를 추가하고 첫 번째 빈 줄 이후의 모든 항목을 제거하고 싶다고 생각합니다. 그렇다면 다음과 같이 하면 됩니다.
awk '{if($1){print NR$0}else{exit}}' file
설명하다
if($1){print NR$0}
NR
: 현재 줄 번호( )와 줄에 첫 번째 필드가 있는 경우 줄을 인쇄합니다(줄이 비어 있는지 확인하는 간단한 방법)$0
.else{exit}
: 첫 번째 빈 줄에서 스크립트를 중지합니다.
답변2
awk -v n=$( grep -oP '(?<=grepkey;)\d+' file ) 'NR <= n {print NR ";" $0}' file
여기서는 GNU grep 명령을 사용하여 파일에서 "grepkey" 값을 추출한 다음 awk 스크립트를 사용하여 줄 번호가 앞에 붙은 파일의 첫 번째 "n" 줄을 인쇄합니다.