列 1 と同じ回数だけ行をコピーします。

列 1 と同じ回数だけ行をコピーします。

行をコピーする方法に関するいくつかの質問があります。ファイルの最初のフィールドにある特定の回数だけ各行を自動的にコピーしたいと思います。 2つのフィールドを持つ大きなファイルがあります。フィールド 1 は数値で、フィールド 2 はこれに関連する情報です。

12     AAA
18     BBB
25     CCC
33     DDD

最初のフィールドの数字と同じ数字を表すように各行をコピーします。だから私は「12 AAA」などの12行を望んでいます。

vimは各行をx回手動で貼り付けることができることを知っていますが(コピー後に「12p」)、大容量ファイルの場合はこれは多くの作業のようです。これを自動化できるスクリプトを知っている人はいますか?

ベストアンサー1

GNU awkを使う:

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

おすすめ記事