열 3을 인쇄하고 행 위아래로 이동

열 3을 인쇄하고 행 위아래로 이동

나한테 테이블이 있어

1 a I
2 b II
3 c III
4 d IV
5 e V
6 f VI
7 g VII
8 h VIII
9 i IX

인쇄하고 싶어요2열은 3행 아래로 변환됩니다.그리고3열, 3줄까지 번역가지다:

1   IV
2   V
3   VI
4 a VII
5 b VIII
6 c IX
7 d
8 e
9 f

어떻게 하나요? 감사해요.

답변1

원래 제공된(현재 변경됨) 6줄 예제를 기반으로 합니다.

$ cat infile
1 a I
2 b II
3 c III
4 d IV
5 e V
6 f VI

$ cat t.awk
{ for (f = 1; f <= NF; f++) { A[NR, f] = $f } }

END { s = -2; t = 4;
    for (r = 1; r <= NR; r++ ) {
        printf "%s %s %s\n", r, A[s, 2], A[t, 3]
        s++; t++
    }
}

$ awk -f t.awk infile
1  IV
2  V
3  VI
4 a 
5 b 
6 c

s이는 합계의 초기 값을 계산하여 N 행의 보다 일반적인 경우로 쉽게 확장될 수 있습니다 t.

$ cat newinfile
1 a I
2 b II
3 c III
4 d IV
5 e V
6 f VI
7 g VII
8 h VIII
9 i IX

$ awk -f t.awk newinfile
1  IV
2  V
3  VI
4 a VII
5 b VIII
6 c IX
7 d 
8 e 
9 f 

관련 정보