0

我正在尝试使用 awk、gsub 和反向引用替换第一列中的一串数字。

例如,我的输入文件是

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

谁能告诉我我的命令有什么问题?先感谢您!

4

1 回答 1

2

我认为您需要使用gensubfromgnu awk来获取反向引用。但是,如果您确实告诉我们您想要什么,输入和输出,它可以以不同的方式完成。像这样:

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
于 2013-09-26T05:23:21.143 回答