如何根据第 1 列值将多列合并为两列?

如何根据第 1 列值将多列合并为两列?

我有一个以下示例格式的文本文件

文件.txt

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

每行中的列数可以不同。我想根据第 1 列值更改仅包含两列的文件。以下是目标输出。

文件_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

相关内容