3

我是初学者,非常感谢您的帮助。我想用一个shell脚本来做到这一点。我有一个看起来像这样的文件:

1
2
3
4
5
6
7
8
9

我想将其转换为:

1 2 3
4 5 6
7 8 9

它比这更大,所以我需要一些适用于长文件的通用工具。

谢谢!

4

5 回答 5

3

另一种 awk 解决方案

awk '{ORS = NR % 3 == 0?"\n":" ";} 1' input.txt
于 2013-07-12T18:30:46.573 回答
2

这是一种方法:

awk 'NR%3!=0{printf "%s ",$1;next}1' inputFile
于 2013-07-12T18:28:00.693 回答
2

您可以使用 来做到这一点paste,例如:

seq 9 | paste - - - -d ' '

3个破折号有3列。您可以添加或删除破折号以增加或减少列。

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

于 2013-07-12T18:28:08.790 回答
2

还有一种可能:

seq 9 | pr -atT -s' ' -3
于 2013-07-12T19:07:58.000 回答
1

像这样的东西?

$ seq 9 | sed 'N;N;s/\n/ /g'
1 2 3
4 5 6
7 8 9
于 2013-07-12T18:27:31.760 回答