![如何将每组行移动到新列?](https://linux22.com/image/139563/%E5%A6%82%E4%BD%95%E5%B0%86%E6%AF%8F%E7%BB%84%E8%A1%8C%E7%A7%BB%E5%8A%A8%E5%88%B0%E6%96%B0%E5%88%97%EF%BC%9F.png)
我想以这种方式将每组行移动到列。
输入:
R1C1
R2C1
R3C1
R1C2
R2C2
R3C2
R1C3
R2C3
R3C3
输出:
R1C1 R1C2 R1C3
R2C1 R2C2 R2C3
R3C1 R3C2 R3C3
我还在下面添加了一些实际示例。
输入:
8.097e-10
7.099e-10
6.638e-10
6.395e-10
6.258e-10
6.180e-10
6.134e-10
6.108e-10
6.093e-10
输出:
8.097e-10 6.395e-10 6.134e-10
7.099e-10 6.258e-10 6.108e-10
6.638e-10 6.180e-10 6.093e-10
答案1
答案2
如果你真的需要使用 awk 来完成,然后可能使用按记录号模 3 索引的数组
awk '{i = (NR-1)%3; a[i] = a[i]? a[i] OFS $0 : $0} END{for(i=0;i<3;i++) print a[i]}' file
R1C1 R1C2 R1C3
R2C1 R2C2 R2C3
R3C1 R3C2 R3C3
如果rs
(reshape) 实用程序可用,然后
rs 0 3 < file | rs -T
或者
paste - - - < file | rs -c -T
答案3
$ cat test.txt
R1C1
R2C1
R3C1
R1C2
R2C2
R3C2
R1C3
R2C3
R3C3
$ awk '{Arr[substr($0,1,2)]=Arr[substr($0,1,2)]" "$0}END{for (i in Arr){print Arr[i]}}' test.txt
R1C1 R1C2 R1C3
R2C1 R2C2 R2C3
R3C1 R3C2 R3C3