用awk替换特定列中的字符串
我试图用awk、gsub和backreference替换第一列中的一串数字 例如,我的输入文件是用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]\)\([
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
这太棒了。谢谢