모두가 헤더가 있는 CSV 파일을 사용하고 제 목적을 위해 헤더도 전달해야 하기 때문에 자주 입력하는 표현식입니다.
cat foo.csv | awk -F',' 'BEGIN{start=0}{if(start==0){start = 1; print $0; next;} ...}'
헤더가 통과할 수 있도록 하고 BASH 스크립트 래퍼를 생성하거나(그리고 내 머릿속에서 드래그하는 것) 반복해서 작성하는 것을 방지하려면 몇 가지 간단한 설정이 있어야 합니다.
그런 설정이 있나요?
답변1
awk
이 CSV 파일에 대해 텍스트 처리 작업을 계속 수행하고 싶다고 가정합니다 . 그렇다면 "줄 번호"에 다음과 같은 조건을 추가하는 것이 좋습니다.
awk -F',' 'NR==1{print} NR>1{ your code here }' foo.csv
여기서는 "레코드 번호"의 내장 변수 NR
이며 일반적으로 행 번호(awk
여러 파일을 처리할 때 이는 "처리된 전체 라인 수"이며 파일당 라인 수는FNR
). 해당 부분을 생략하여 인쇄 헤더를 쉽게 생략할 수도 있습니다 NR==1{...}
.
print
작전에 사용하게 된다면 "골프"를 할 수 있습니다.
awk -F',' 'NR>1{ your code here }1' foo.csv
1
"인쇄 결과 줄( )" 을 나타냅니다 $0
.
반품:
cat
파일로 파이프 할 필요가 없으며awk
명령줄 인수로 제공하기만 하면 됩니다.start=0
초기화되지 않은 변수의 기본값은 "0"이므로 실제로 섹션에서 해당 문을 사용할 필요가 없습니다.BEGIN