sed를 사용해서 문자열 바꾸기
글쓴이: taeyeung / 작성시간: 목, 2003/05/15 - 5:07오후
제가 c로 된 프로그램을 고칠일이 있는데요.
strncpy( aaa, bbb, 10); 를 strcpy( aaa, bbb);로 바꾸려고 합니다.
작업 환경은 Windows 환경이고 도스 창에서 GNU sed ver 3.02의
프로그램으로 배치 파일을 만들려고 합니다.
정규 표현식을 다루는 실력이 짧아 그러니 도와 주세요.
Forums:
[code:1]cat foo.c | sed -e 's/strncpy
cat foo.c | sed -e 's/strncpy( aaa, bbb, 10);/strncpy( aaa, bbb);/' > bar.c
그런데 이런 것도 정규표현식이라고 할 수 있을지... ^^;
sed 포기하고 python으로 구현
sed 에서는 백 레퍼런스 기능을 못 사용하겠더군요.
그래서 python으로 구현을 해 보았습니다.
>>> import re
>>> text = "aaaW( 1, aaa, bbb)"
>>> re.sub( "(\w+)W\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)", "\\1( \\2, \\3)", text)
원래의 문자열 aaaW( 1, aaa, bbb)
결과 문자열 aaa( 1, aaa)
sed 버젼의 해결 방법
aaa.txt에
strncpy( aaa, bbb, 10 )을 strcpy( aaa, bbb) 형태로 바꾸는 방법
입니다.
sed -e "s/strncpy/strcpy/g" -e "s/,[ ]*10[ ]*//g" aaa.txt
sed -e "/strncpy( aaa, bbb, 10)/strcpy( aaa, bbb)/g" aaa.txt
처럼 할 수 없었던 이유는 매번 aaa와 bbb가
다르더라도 치환이 가능하게 하기 위해서 입니다.
댓글 달기