我正在尝试使用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
有人可以告诉我我的命令有什么问题吗? 提前谢谢!
答案 0 :(得分:2)
我认为您需要使用gensub
中的gnu 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