R의 출력이 있고 출력을 올바르게 인쇄해야 합니다. 홀수 행과 짝수 행을 해당 열로 인쇄해야 합니다.
원본 파일
4 4 4 4 4
-3.592311e+00 -3.360352e+00 -3.063397e+00 -3.660137e+00 8.053911e+00
4 4 4 4 4
1.077868e+01 -2.455155e+00 6.214082e+00 5.311552e+00 5.311552e+00
10 10 10 10 10
-4.394679e+00 -2.527588e+00 7.716434e+00 5.001199e+00 2.653916e+00
10 10 10 10 10
3.673181e+00 3.721885e+00 3.464234e+00 -4.363173e-01 6.849429e-01
원하는 출력
4 -3.592311e+00
4 -3.360352e+00
4 -3.063397e+00
4 -3.660137e+00
4 8.053911e+00
4 1.077868e+01
4 -2.455155e+00
4 6.214082e+00
4 5.311552e+00
4 5.311552e+00
10 -4.394679e+00
10 -2.527588e+00
10 7.716434e+00
10 5.001199e+00
10 2.653916e+00
10 3.673181e+00
10 3.721885e+00
10 3.464234e+00
10 -4.363173e-01
10 6.849429e-01
다음 코드를 사용했지만 원하는 것을 제공하지 않습니다.
awk '{ for (i = 1; i <= NF; i++) f[i] = f[i] " " $i ; if (NF > n) n = NF } END { for (i = 1; i <= n; i++) sub(/^ */, "", f[i]) ; for (i = 1; i <= n; i++) print f[i] } ' file
답변1
이는 짝수 행과 홀수 행을 적절한 배열로 분할하는 데 의존하는 awk 방법입니다.
$ awk 'NR%2 !=0 {split($0,col1)}; NR%2 == 0 {split($0,col2); for (i=1;i<=length(col1);i++) print col1[i],col2[i]};' inpu>
4 -3.592311e+00
4 -3.360352e+00
4 -3.063397e+00
4 -3.660137e+00
4 8.053911e+00
4 1.077868e+01
4 -2.455155e+00
4 6.214082e+00
4 5.311552e+00
4 5.311552e+00
10 -4.394679e+00
10 -2.527588e+00
10 7.716434e+00
10 5.001199e+00
10 2.653916e+00
10 3.673181e+00
10 3.721885e+00
10 3.464234e+00
10 -4.363173e-01
10 6.849429e-01
작동 원리는 매우 간단합니다. NR % 2 != 0
이 줄이 홀수 줄인지 짝수 NR % 2 == 0
줄인지 알려줍니다. 홀수 행에서는 전체 행을 배열로 분할합니다. 짝수 행에서는 두 배열을 항목별로 분할하여 인쇄합니다. 이 프로세스는 마지막 행에 도달할 때까지 교대로 반복됩니다.
물론 이는 기둥 사이의 공간을 늘리는 등의 방법으로 개선될 수 있습니다. 이 방법은 완벽하지는 않지만 원본 파일의 각 행에 동일한 수의 필드가 있는 특정 경우에 맞게 조정되었습니다.