2010-01-06 2 views
1

5 문자의 연속 문자로 모든 문자열을 역전해야합니다.5 개의 연속 된 문자가있는 역방향 문자열

hello hi adams sde 
abcde abs 

필수 출력 : 예를 들어

olleh hi smada sde 
edcba abs 

내가 사용 :

sed -n 's\(a-z]\)\([a-z]\)\([a-z]\)\([a-z]\)\([a-z]\)/\5\4\3\2\1/p' 

는 "아담스"제외 문자열을 필요 취소합니다. 이 문제를 해결하도록 도와주세요.

+0

투표이 왜 닫습니다? 내가 본 가장 명확한 단어 질문이 아니지만 "스팸"으로 묘사 될 수있는 방법을 볼 수는 없습니다 ... –

답변

1

"adams"가 대체되지 않지만 명령이 첫 번째로 일치하는 인스턴스 만 바꾸는 것처럼 보입니다. 이 시도 :

sed -n 's/\([a-z]\)\([a-z]\)\([a-z]\)\([a-z]\)\([a-z]\)/\5\4\3\2\1/pg' 

을 수동에서 :

The s command can be followed by zero or more of the following flags: 
g Apply the replacement to all matches to the regexp, not just the first. 
(snip) 
+0

당신은 거의 감사합니다 :) sed -n 's/\\ ([ ([az] \\) \\ ([az] \\) \\ ([az] \\)/\ 5 \ 4 \ 3 \ 2 \ 1/pg ' – Leo

+0

감사합니다. 답변이 수정되었습니다. –

+0

"강력한"과 같은 문자열이 있으면 "rewopful"이됩니까? – ghostdog74

1

사용 AWK

awk '{ 
    for(i=1;i<=NF;i++) { 
     if(length($i)==5) { 
      v="" 
      for(o=length($i);o>0;o--) { 
       v=v substr($i,o,1) 
      } 
      $i=v 
     } 
    } 
}1' file 

출력

$ more file 
hello hi adams sde 
abcde abs 
$ ./shell.sh 
olleh hi smada sde 
edcba abs 
관련 문제