私にテーブルがあります。
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