우선 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
'bash script' 카테고리의 다른 글
[bash: awk] 특정 위치의 문자열 또는 문장(행 전체)의 길이 확인 (0) | 2024.07.31 |
---|---|
[bash: date] 리눅스 date 명령으로 이메일 헤더 형식 시간 출력 (0) | 2024.05.16 |
[bash: date] 현재 시간을 다른 시간대(timezone) 기준으로 출력 (0) | 2024.03.15 |
[bash: stat] 파일 크기 확인 (0) | 2024.01.03 |
[bash: readarray] 리눅스 명령어의 출력을 한 줄씩 배열(array) 원소로 할당 (0) | 2023.12.12 |