将行复制与第 1 列相同的次数

将行复制与第 1 列相同的次数

关于如何复制行有几个问题,我想自动将每一行复制到文件第一字段中找到的特定次数。我有一个包含两个字段的大文件,字段一是数字,字段二是相关信息,就像这样。

12     AAA
18     BBB
25     CCC
33     DDD

我会复制每一行,以便它的表示次数与第一字段中的数字相同。所以,我想要 12 行“12 AAA”等等。

我知道我可以在 vim 中手动粘贴每一行 x 次(复制然后“12p”),但这对于大文件来说似乎很繁重。有谁知道可以自动执行此操作的脚本吗?

答案1

使用 GNU awk:

#!/usr/bin/gawk -f
{ 
    for (c=strtonum($1) ; c ; c--) 
        print
}

答案2

awkJigglyNaga 的答案相同:

awk '{ c=0; while ($1>c++) print }' infile

答案3

另一种 awk 解决方案:

<infile awk ' i=$1 { while(i--) print }' 

相关内容