awk,打印所有列并使用substr添加新列

awk,打印所有列并使用substr添加新列,awk,Awk,我有这张桌子 USI,Name,2D-3D RO0001,Patate,2D RO0002,Haricot,3D RO0003,Banane,2D RO0004,Pomme,2D RO0005,Poire,2D 我想要这个 USI,Name,2D-3D RO0001,Patate,2D,RO_2D_Patate RO0002,Haricot,3D,RO_3D_Haricot RO0003,Banane,2D,RO_2D_Banane RO0004,Pomme,2D,RO_2D_Pomme RO

我有这张桌子

USI,Name,2D-3D
RO0001,Patate,2D
RO0002,Haricot,3D
RO0003,Banane,2D
RO0004,Pomme,2D
RO0005,Poire,2D
我想要这个

USI,Name,2D-3D
RO0001,Patate,2D,RO_2D_Patate
RO0002,Haricot,3D,RO_3D_Haricot
RO0003,Banane,2D,RO_2D_Banane
RO0004,Pomme,2D,RO_2D_Pomme
RO0005,Poire,2D,RO_2D_Poire
我设法与awk一起获得施工“RO_2D_Patate”

但我想将之前的所有列$0打印为第二个表

我什么都试过了,但我还是个新手


有什么想法吗?

请在您的帖子中为示例输入文件和预期输出使用代码标签。谢谢您的回答。我尝试过,但我不明白为什么,但我的结果是不同的。我哪里出错了?我得到的这个“_patate,2D”与另一个相同,我之前没有我的3列…很可能您的输入文件包含控件Ms(通常在Windows生成的文件中)。在文件上运行awk或任何其他UNIx工具之前,请先在文件上运行
dos2unix
或类似工具。谢谢您的回答。我有完全相同的问题上面。我尝试过,但我不明白为什么,但我的结果是不同的。我哪里出错了?我得到的这个“_patate,2D”与另一个相同,我之前没有我的3列…检查你的输入文件,它是否与你发布的内容一致。因为Ed的答案和我的答案在这里都很好。虽然这可能会回答问题,但请编辑您的帖子,并添加一个简短的说明,说明您的命令的作用以及它解决最初问题的原因。
awk -F, '{print $0 (NR>1 ? FS substr($1,1,2)"_"$3"_"$2 : "")}' Test4.txt
awk -F, '{print $0 (NR>1 ? FS substr($1,1,2)"_"$3"_"$2 : "")}' Test4.txt
$ awk -F, -v OFS=, 'NR>1{$4=substr($1,1,2)"_"$3"_"$2}1' Test4.txt
USI,Name,2D-3D
RO0001,Patate,2D,RO_2D_Patate
RO0002,Haricot,3D,RO_3D_Haricot
RO0003,Banane,2D,RO_2D_Banane
RO0004,Pomme,2D,RO_2D_Pomme
RO0005,Poire,2D,RO_2D_Poire
awk -F, 'NR>1{print $0,substr($1,1,2)"_"$NF"_"$2}/USI/' OFS=, file

USI,Name,2D-3D
RO0001,Patate,2D,RO_2D_Patate
RO0002,Haricot,3D,RO_3D_Haricot
RO0003,Banane,2D,RO_2D_Banane
RO0004,Pomme,2D,RO_2D_Pomme
RO0005,Poire,2D,RO_2D_Poire