텍스트 파일 (input.txt)에서 처음 6 줄 / 행을 건너 뛰고 나머지를 awk로 처리하려면 어떻게해야합니까? 내 awk 스크립트 (program.awk)의 형식은 다음과 같습니다.
BEGIN {
}
{
process here
}
END {
}
내 텍스트 파일은 다음과 같습니다
0
3
5
0.1 4.3
2.0 1.5
1.5 3.0
0.3 3.3
1.5 2.1
.
.
.
다음에서 시작하여 파일을 처리하고 싶습니다.
0.3 3.3
1.5 2.1
.
.
.
답변
다음 두 패턴 중 하나를 사용하십시오.
NR>6 { this_code_is_active }
아니면 이거:
NR<=6 { next }
{ this_code_is_active }
awk에 대한 인수로 많은 파일이 있고 모든 파일에서 6 행을 건너 뛰려면 NR 대신 FNR을 사용하십시오.
답변
시험:
awk 'FNR > 6 { #process here }' file
답변
head
또는 tail
프로그램을 사용하여 파일의 시작 또는 끝에 임의의 수의 행을 건너 뛸 수도 있습니다 .
구체적인 질문에 대해서는
tail input.txt -n+7 | program.awk
할 것입니다, 당신 제공 한 program.awk
파일이 실행 파일입니다. 그렇지 않으면, 당신은 사용할 수 있습니다
tail input.txt -n+7 | awk -f program.awk
이런 식으로, 당신은 각 라인을 비교할 필요가 없으며 AWK 코드의 논리를 변경할 필요가 없습니다.
tail
일곱 번째 줄부터 시작하여 여섯 번째 줄을 건너 뛰고 텍스트 스트리밍을 시작합니다.
캐싱 덕분에 텍스트 프로세스가 간단한 경우에는 성능이 크게 향상되지 않습니다. 그러나 파일이 길고 클라우드 환경에서 반복적으로 사용하면 비용이 절약 될 수 있습니다.