awk: 코드를 작성하지 않고 헤더 우회

awk: 코드를 작성하지 않고 헤더 우회

모두가 헤더가 있는 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

관련 정보