[완료][SED] sed 잘쓰시는분 도와주세요 ㅠ_ㅠ ( 정규표현식 관련..)
글쓴이: jekai / 작성시간: 토, 2007/09/08 - 10:41오후
SED에서 정규표현식을 쓸려는데, 잘 안되네요...
조건은 M 으로 시작하는 행에서 소수점 포함숫자 에 a 혹은 b 가 붙은 것을 a 와 b 를 없애주는 것입니다.
예를들어
Masfdkjasdfasdf 123.99a 123b lkjlaskjfsadf 879.234a
이면,
Masfdkjasdfasdf 123.99 123 lkjlaskjfsadf 879.234
으로 바꿔주는것입니다.
그런데 제가 쓴 정규식은
sed '/^M/s/(([0-9]+)|([0-9]*\.[0-9]+))[ab][ \n]/바뀔문자/g
이런식으로 생각했는데.... 앞에 숫자부분만을 바뀔문자에 지정하지 못하겠고...
그리고 sed 에서 저런 정규식이 잘 안먹히는것 같더라구요...
(Lex&Yacc 책에 나오는건데 ㅡ.ㅡ;; sed 정규식은 제약이 있는가요? )
( ) 그룹지정이나 | OR 나, \n 엔터키 가 잘못되었는것 같은데.. 어떻게 표현해야할지 모르겠네요..
그래서 안되겠다 싶어서 축약해서
sed '/^M/s/[ab][ \n]/ /g 이런식으로 해결할려고했는데...
\n 가 안먹히는것 같더라구요...
그리고 '/^M/s/[0-9]+[ab]/어쩌고저쩌고/g' 이것도 못찾던데... 이유를 알수가 없습니다.
bold 체로 적은 것,,,,, 왜 안되는지.. 설명좀 해주시고 해결책좀 알려주세요 ㅠ_ㅠ
Forums:
각 프로그램마다 사용하는 정규표현식이 조금씩 다릅니다.
sed에서는
1번 이상을 가리키는 것은 \+이고
or 를 가리키는 것은 \|입니다.
괄호는 \( \)이렇게 묶어야 되고요.
\n같은건 지원하지 않습니다.
어짜피 sed는 줄 단위로 작업하기 때문에 굳이 \n처리를 하지 않아도 되고요
sed '/^M/s/\([0-9]\+\)[ab]/\1/g' my_data
요로코롬 하면 됩니다.
:)
netionics 님 정말 감사합니다.
지금 작업환경이 아니라서 테스트는 못해봤지만, 잘될것 같습니다.^^
답변 정말 감사합니다^^
TEST 해봤습니다.
Test 해봤는데, \+ 이거는 안먹히는거 같은데요? 근데 이상하게도 * (0이상) 이거는 먹힙니다.
그리고 [0-9]\* 이런식이 아니라 [0-9]* 이런식으로 해야지 먹히네요... 왜이런가요?? ㅡ.ㅡ;;
댓글 달기