2013-09-26 8 views
0

awk, gsub 및 역 참조를 사용하여 첫 번째 열의 숫자 문자열을 대체하려고합니다.특정 열의 문자열을 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