156780행마다 헤더 행이 있는 파일이 있습니다.
헤더 행의 두 번째 열을 제외한 모든 행의 첫 번째 열에 awk 명령을 적용하고 싶습니다.
아니면 최소한 머리글 행은 영향을 받지 않아야 합니다.
누구든지 내가 이 일을 할 수 있도록 도와줄 수 있나요?
아래와 같이 awk 명령을 사용했습니다.
awk 'NR>2 {printf("%10i %15.8E\n",$1,$2);}' fort.74 > fort.75
답변1
헤더 행은 조건을 충족합니다 NR % 156780 == 0
. 이는 다음을 사용할 수 있음을 의미합니다.
awk 'NR % 156780 != 0 { process non-header row }' ...
...아니면 아마도
awk '(NR - 1) % 156780 != 0 { process non-header row }' ...
( NR
첫 번째 줄은 0이 아닌 1입니다.)
헤더 행을 영향 없이 전달하려면 다음을 수행하십시오.
awk '(NR - 1) % 156780 != 0 { process non-header row } (NR - 1) % 156780 == 0 { print }' ...
즉, print
헤더가 아닌 행에서 사용하는 연산의 반대 조건에 대해 별도의 연산을 추가하면 됩니다.
답변2
간단한 것은 어떻습니까?
awk '(NR==1) { header=$0; rem="we retrieve the header content";}
( $0 != header ) { process non header lines here ... }'
(첫 번째 줄에 ";next"를 추가할 수 있는 옵션이 있지만 그렇지 않은 경우 원본 파일의 처음 5줄과 같은 작은 파일에서 테스트할 수도 있습니다. 헤더 라인과 일치합니다.)