bash script2024. 8. 5. 13:01

우선 sed를 이용한 문자열 대체 방법은 이전 게시물을 참고하자. 여기로.

이전 게시물의 예시를 그대로 가져와 보면 아래와 같다. 처음 나오는 abc를 ABCD로 교체하는 경우다.

echo "abc_abc_abc" | sed "s/abc/ABCD/"
ABCD_abc_abc

출현하는 문자열 모두를 대체하려면 아래와 같이 하면 된다.

echo "abc_abc_abc" | sed "s/abc/ABCD/g"

그렇다면 처음 나오는 2개의 문자열만 대체하려면 어떻게 해야 할까? 첫번째 출현하는 문자열을 대체하는 설정을 2번 반복해 주면 된다. 구분은 세미콜론(;)으로 한다. 처음에 나오는 2개의 abc만 ABCD로 바꾸고 싶다면 아래와 같이 하면 된다.

echo "abc_abc_abc" | sed "s/abc/ABCD/;s/abc/ABCD/"
ABCD_ABCD_abc

같은 패턴이 반복해서 출현하는데 앞의 몇개만 대체하고 싶을 경우에 활용하면 되겠다. 아래와 같이 -e 옵션을 이용하는 방법도 있는데, 위의 추가적인 방법을 알게 되어 정리해 둔다. (-e 옵션 사용은 이전 게시물을 참고하자. 여기에)

echo "abc_abc_abc" | sed -e "s/abc/ABCD/" -e "s/abc/ABCD/"

 

 

728x90
Posted by 반달가면