[완료]sed 관련 질문드립니다.
글쓴이: jekai / 작성시간: 목, 2009/01/22 - 1:04오후
안녕하세요, sed 는 아니고 vi 에서 sed( :s/a/b/g )기능을 쓰다가
pattern matching 이 안되는게 있어서 질문드립니다.
아래 보기인데요,
aaa13 bbb21 cc34 ddd9
위의 문장을 아래와 같이 바꿀려는데 제 표현식에 문제가 있는지 pattern matching 이 잘 안되네요.
aaa<13> bbb<21> cc<34> ddd<9>
제 표현식은 아래와 같습니다.
:%s/\([0-9]+\)/<\1>/g
위 표현이 안되어 :%s/\([0-9]*\)/<\1>/g 와 같이 해보았지만
a<>a<>a<><13> 같이 인식되는게, 없는 문자까지 <> 로 감싸버리네요..
표현상 :%s/\([0-9]+\)/<\1>/g 이것이 맞는거 같은데, pattern matching algorithm 이 어떻게 돌아가는지
몰라도 안되는 이유를 모르겠습니다.
혹시 잘 아시는분 있으시면 도움 요청드려요~~
감사합니다.
Forums:
:%s/\([0-9]\+\)/<\1>/g
----------------------------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요
-------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요.
\+ 이것은....
태스트해보니깐 잘 동작하네요,,,
'+' 자체문자를 표현하는게 아닌가요? ;;
:%s/\([0-9]\+\)/<\1>/g :
: --> 프롬프트
%s --> 전체내용중에서
[0-9] --> 0에서 9 까지중 하나..즉 숫자
+ --> 한번이상 반복되면
\([0-9]\+\) --> 그 패턴을 괄호로 묶음 , 앞 뒤로 역슬레쉬 필요, 또한 + 문자에도 이스케이프용 역슬레쉬 필요
<\1> --> 숫자 1 이 앞에 괄호로 묶은 패턴 중 첫번째 혹시 괄호를 두개 이상쓰면 2, 3 등 증가하여 사용, 앞 뒤로 <, > 쒸움.
설명이 되었을라나요...^^;
댓글 달기