2013-09-26 4 views
0

Я пытаюсь заменить строку чисел в первом столбце, используя awk, gsub и backreference.Заменить строки в определенном столбце с помощью awk

Например, мой входной файл

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 

Может ли кто-нибудь сказать мне, что не так в моей команде? Спасибо заранее!

ответ

1

Я думаю, вам нужно использовать 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 
+0

Это блестящий. Благодаря! – jamie