列1の値に基づいて複数の列を2つの列にマージする方法は?

列1の値に基づいて複数の列を2つの列にマージする方法は?

次の形式のテキストファイルがあります。

ファイル.txt

Record1 20 23;
Record2 256;
Record3 45 679 98 1;

各行の列数は異なる場合があります。列1の値に基づいて2つの列のみを含むファイルを変更したいと思います。以下は目標出力です。

File_2_Columns.txt

Record1 20;
Record1 23;
Record2 256;
Record3 45;
Record3 679;
Record3 98;
Record3 1;

答え1

これは一つの方法です

awk '{for(a=2;a<=NF;a++){printf "%s %s%c\n",$1,$a,a==NF ? "" : ";"}}' File.txt >File_2_Columns.txt

残りの宿題もよく仕上げてください ;-)

教師が最短回答に追加のスコアを与える場合は、次のことを試してください。

awk '{for(a=2;a<=NF;){printf"%s%c\n",$1" "$a,a++-NF?";":""}}' File.txt >File_2_Columns.txt

関連情報