用awk替换特定列中的字符串

用awk替换特定列中的字符串,awk,gsub,backreference,Awk,Gsub,Backreference,我试图用awk、gsub和backreference替换第一列中的一串数字 例如,我的输入文件是 1-00001 1 1-00001 1-00001-01 1 1-00001 1-00001-02 1 1-00001 我想要的结果是 1-00001-00 1 1-00001 1-00001-01 1 1-00001 1-00001-02 1 1-00001 我尝试了以下unix命令 awk '{gsub("^1-\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([

我试图用awk、gsub和backreference替换第一列中的一串数字

例如,我的输入文件是

1-00001 1 1-00001
1-00001-01 1 1-00001
1-00001-02 1 1-00001
我想要的结果是

1-00001-00 1 1-00001
1-00001-01 1 1-00001
1-00001-02 1 1-00001
我尝试了以下unix命令

 awk '{gsub("^1-\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)$","^1-\1\2\3\4\5-00$",$1); print}' input
结果是

^1-^A^B^C^D^E-00$ 1 1-00001
1-00001-01 1 1-00001
1-00001-02 1 1-00001
谁能告诉我我的命令有什么问题吗?
提前谢谢你

我认为您需要使用
gnu awk
中的
gensub
来获取反向参考。 但如果你告诉我们你想要什么,输入和输出,它可以做得不同。像这样:

awk 'split($1,a,"-")!=3 {$1=$1 "-00"}1' file
1-00001-00 1 1-00001
1-00001-01 1 1-00001
1-00001-02 1 1-00001

这太棒了。谢谢