800行を超えるファイルがあります。各行には、私たちが測定しなければならない特性を持つ特定の数の個人があります(n = 3、5、または10)。測定する必要がある数値(n)に基づいて、各ファイルが独自の行を持つようにファイルを拡張したいと思います。
たとえば、
Row Who/What Description n
8001 Maize line Control 3
になります:
Row Who/What Description n
8001 Maize line Control 3
8001 Maize line Control 3
8001 Maize line Control 3
私はUnixに精通していませんが(まだ学んでいます!)txt / csvファイルを読んでから、4番目の列のnに基づいてコピーする必要があることを知っています。列ヘッダーを繰り返す必要はなく、単に整理のためのものです。誰かが私を助けることができますか?
答え1
以下を試してくださいawk
。
awk 'NR==1{ print; next } { repeat=$NF; while (repeat--) print } ' infile
提供したサンプルファイルは.csvファイルではなく、コンマで区切る必要があります。-F
入力ファイルで使用される区切り文字を指定するには、awkオプションを使用する必要があります。
awk -F, 'NR==1{ print; next } { repeat=$NF; while (repeat--) print } ' infile
コメントにある質問に答えるには、次のようにします。
awk 'NR==1{ print; next } { bakup=$1; repeat=$NF;
while (repeat--) { $1=bakup"."++dup; print }; dup=0 }' infile