从一列中,取每3个值并将它们排成一行

时间:2013-07-12 18:23:29

标签: bash shell

我是初学者,所以感谢你的帮助。我想用shell脚本来做这件事。 我有一个看起来像这样的文件:

1
2
3
4
5
6
7
8
9

我想将其转换为:

1 2 3
4 5 6
7 8 9

它比那更大,所以我需要一些适用于长文件的泛型。

谢谢!

5 个答案:

答案 0 :(得分:3)

备用awk解决方案

awk '{ORS = NR % 3 == 0?"\n":" ";} 1' input.txt

答案 1 :(得分:2)

这是一种方式:

awk 'NR%3!=0{printf "%s ",$1;next}1' inputFile

答案 2 :(得分:2)

您可以使用paste执行此操作,例如:

seq 9 | paste - - - -d ' '

3个破折号有3列。您可以添加或删除短划线以包含更多或更少的列。

-d ' '是按空格分隔列,因为默认为制表符。

答案 3 :(得分:2)

又一种可能性:

seq 9 | pr -atT -s' ' -3

答案 4 :(得分:1)

这样的东西?

$ seq 9 | sed 'N;N;s/\n/ /g'
1 2 3
4 5 6
7 8 9