4개의 열이 있는 파일이 있습니다. 이 4개의 열을 배열에 넣고 NR
인덱스로 사용하면 항목이 어떻게든 반복됩니다. 이 문제에 대한 자세한 설명은 아래를 참조하세요.
파일의 처음 5줄은 다음과 같습니다.
-bash-4.2$ cat -ve file | head -n 5
chr start end p$
13 59341171 59343427 1.86642E-18$
10 72886545 72888679 1.13636E-09$
16 81900987 81902805 6.79697E-09$
1 46797890 46800143 2.24436E-08$
각 행을 로 인덱싱된 배열의 항목으로 지정하면 NR
배열의 출력 결과는 다음과 같습니다(이전 5개 행은 예입니다).
-bash-4.2$ awk 'NR<6 {a[NR]=$0;
> for(x in a)
> print x, a[x]}' file
1 chr start end p
1 chr start end p
2 13 59341171 59343427 1.86642E-18
1 chr start end p
2 13 59341171 59343427 1.86642E-18
3 10 72886545 72888679 1.13636E-09
4 16 81900987 81902805 6.79697E-09
1 chr start end p
2 13 59341171 59343427 1.86642E-18
3 10 72886545 72888679 1.13636E-09
4 16 81900987 81902805 6.79697E-09
5 1 46797890 46800143 2.24436E-08
1 chr start end p
2 13 59341171 59343427 1.86642E-18
3 10 72886545 72888679 1.13636E-09
파일에 5줄이 있는 것을 볼 수 있지만 항목이 여러 번 반복됩니다. 문제가 무엇인지, 해결 방법을 알고 싶습니다. 미리 감사드립니다.
답변1
NR < 6인 모든 행에 대해 전체 배열을 인쇄하도록 지시합니다.
배열을 한 번만 인쇄하려면 다음을 수행하십시오.뒤쪽에이 NR < 6 {}
블록은 END 블록에 있습니다.
예를 들어:
awk 'NR<6 { a[NR] = $0 };
END { for(x in a) print x, a[x] }' file
1 chr start end p
2 13 59341171 59343427 1.86642E-18
3 10 72886545 72888679 1.13636E-09
4 16 81900987 81902805 6.79697E-09
5 1 46797890 46800143 2.24436E-08