paste
我可以通过这样的单列输入创建一个包含多列的文件:
some_command | paste - -
some_command
当以列主格式生成数据时,此方法有效。换句话说,输入
1
2
3
4
结果输出
1 2
3 4
然而,我想要相反的,即我想要
1 3
2 4
背景:我想收集所有氮第'列来自中号文件合并到一个聚合文件中。我尝试通过以下方式执行此操作:
cut -f 5 "${files[@]}" | paste - - - - - …
(和中号 -
s)。但如前所述,这不起作用,正如paste
预期的列主输入一样。我忍不住认为应该有一个 coreutils (或纯 Bash)解决方案。
答案1
如果我正确理解了这个问题,你可以尝试pr
:
cut -f 5 "${files[@]}" | pr -5 -s' ' -t -l 40
其中-5
是列数,-s' '
是分隔符(空格),-l 40
是页长(40 行)。
没有的话coreutils
,人们可以用来split
创造一些氮线路:
分割-l氮内菲莱
或者
一些命令 |分割-l氮
然后paste
他们在一起:
paste x* > outfile
rm x*