行をコピーする方法に関するいくつかの質問があります。ファイルの最初のフィールドにある特定の回数だけ各行を自動的にコピーしたいと思います。 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
}
答え2
awk
JigglyNagaと同じ答え:
awk '{ c=0; while ($1>c++) print }' infile
答え3
別のawkソリューション:
<infile awk ' i=$1 { while(i--) print }'