连续重复n次中的每个数字,其中n是行中的数字

时间:2015-03-22 04:49:18

标签: awk sed foreach vi

我有文本文件,每个文件都有一列数字:

2
3
4

我想复制每一行n次,其中n是行中的数字,因此输出如下所示:

2
2
3
3
3
4
4
4
4

我找到的唯一示例使用了固定数量的n

我认为sed可能会很好地阅读每一行,但我无法弄清楚如何告诉sed使用每行中的数字作为时间的值该行应该重复。

1 个答案:

答案 0 :(得分:3)

'在awk中显得微不足道:

awk '{for (i = 1; i <= $1; i++) print $0}'

或等同地:

awk '{for (i = 0; i < $1; i++) print}'

请注意,代码会针对$1而不是$0进行测试,但会打印$0而不是$1。这允许您输入如下内容:

12 Lords a-leaping
11 Ladies dancing
10 Drummers drumming
9 Pipers piping
8 Maids a-milking
7 Swans a-swimming
6 Geese a-laying
5 Gold rings
4 Calling birds
3 French hens
2 Turtle doves
1 Partridge in a pear tree

并且你会得到相当多的输出重复这些行,就像行中第一个数字所指示的那样。