다음은 단일 파일에 포함된 일부 테이블 데이터의 형식입니다.
;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" 줄을 인쇄하고 줄 번호가 앞에 붙습니다.