텍스트 파일(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
.
.
.
답변1
다음 두 가지 모드 중 하나를 사용하세요.
NR>6 { this_code_is_active }
아니면 이거:
NR<=6 { next }
{ this_code_is_active }
awk에 대한 인수로 많은 파일이 있고 각 파일에서 6줄을 건너뛰려면 NR 대신 FNR을 사용하십시오.
답변2
노력하다:
awk 'FNR > 6 { #process here }' file
답변3
head
또는 프로그램을 사용하여 파일의 시작이나 끝 부분에서 원하는 만큼의 행을 건너뛸 수도 있습니다 tail
.
귀하의 구체적인 질문에 대해서는
tail input.txt -n+7 | program.awk
program.awk
파일이 실행 가능 하다면 괜찮습니다 . 그렇지 않으면 다음을 사용할 수 있습니다.
tail input.txt -n+7 | awk -f program.awk
이렇게 하면 각 행을 비교할 필요가 없고 AWK 코드의 논리를 변경할 필요도 없습니다.
tail
텍스트는 일곱 번째 줄부터 스트리밍되며 처음 여섯 줄은 건너뜁니다.
이는 특히 캐싱으로 인해 텍스트 처리가 사소한 경우 성능에 큰 영향을 미치지 않습니다. 하지만 긴 파일을 사용하고 클라우드 환경에서 재사용하면 일부 비용 절감 효과가 있을 수 있습니다.
답변4
for pkg in $(pip list | awk 'FNR > 2 { print $1 }'); do pip install --upgrade $pkg; done