2012-06-26 3 views
3

많은 문자를 하나로 대체하는 방법은 많이 있습니다.한 문자를 여러 문자로 바꾸기 정규 표현식으로 바꾸기

s/a\{100\}/a/ 

a 100 번을 입력하지 않고 그 반대의 경우도 마찬가지 (백 a 하나 a를) 대체 할 수있는 방법이 있나요?

ps. 정규식은 sed입니다. 당신이 좋아하는 것처럼

+1

는 위에 루프 스크립트를 작성? 나는 당신이 정규식 내에서 그것을 할 수 있다고 생각하지 않는다 – danieltahara

+0

디자인의 일부가 아닌 것 같아요. –

답변

4

방법에 대해 :

sed ':x;/a\{100\}/b;s/a/aa/;tx' 
+0

그래, 순수한 정규 표현식에 방법이없는 것 같습니다. 그러므로 나는 당신의 대답을 받아 들일 것입니다. 고맙습니다. – rush

1

정확히 같은 간결하지 않습니다,하지만 당신이 뭔가를 할 수 있습니다 :

sed -e 's/a/aaaaaaaaaa/' -e 's/\(aaaaaaaaaa\)/\1\1\1\1\1\1\1\1\1\1/' 

은 기본적으로 다음 10 개 사본 (10)의 순서를 교체, 그 중 10 원래 a를 교체합니다. 100 이외의 숫자는 분명히 다르게 계산할 것입니다.

+0

'sed '/ a/aaaaaaaaaa /; s/a \ {10 \}/&&&&&&&&&&&& /''훨씬 더 짧을 수 있습니다. =) 불행히도 다른 방법이없는 것처럼 보입니다. – rush

+0

오른쪽 ... '&'을 잊어 버렸습니다. 그리고 별도의'-e' 인수는 단지 개인적인 취향에 불과합니다. 나는 그것이 어떻게 진행되고 있는지 쉽게 해독 할 수 있다고 생각합니다. 하지만 물론 일단 스크립트를 작성하고 스크립트에 넣으면 모든 것을 하나의 인수로 결합하는 것이 더 의미가 있습니다 ... – twalberg

관련 문제