'sed' 명령에서 다양한 구분자(delimiter)
sed
명령어에서 구분자(delimiter)는 s
(substitute) 명령에서 원본 문자열과 대체 문자열을 구분하는 데 사용됩니다. 기본적으로 /
를 구분자로 사용하지만, 문자열에 /
문자가 포함된 경우 혼동을 피하기 위해 다른 구분자를 사용할 수 있습니다. 여기서 구분자로 사용될 수 있는 문자의 예로 @
, |
, #
등을 들 수 있습니다.
기본 구분자 /
기본적으로 sed
는 /
를 구분자로 사용합니다. 예를 들어:
sed 's/original/replacement/g' file.txt
이 명령어는 file.txt
에서 original
을 replacement
로 대체합니다.
다른 구분자 사용 예
텍스트에 /
가 포함되어 있는 경우, 구분자를 다른 문자로 바꾸면 가독성이 좋아지고 실수를 줄일 수 있습니다.
@
구분자
sed 's@/home/user@/mnt/user@g' file.txt
이 명령어는 /home/user
를 /mnt/user
로 대체합니다.
|
구분자
sed 's|/var/www/html|/srv/www/html|g' file.txt
이 명령어는 /var/www/html
을 /srv/www/html
로 대체합니다.
#
구분자
sed 's#/usr/local/bin#/opt/bin#g' file.txt
이 명령어는 /usr/local/bin
을 /opt/bin
로 대체합니다.
구분자 사용 예시
여러 가지 구분자를 사용하는 예제를 살펴보겠습니다.
기본 구분자 /
echo "path: /usr/local/bin" | sed 's//usr/local/bin//opt/bin/g'
이 경우, /
가 포함되어 있어서 읽기 어려워질 수 있습니다. 기본 구분자의 경우 경로 구분과 혼돈되기 때문에 다른 구분자를 사용하면 구분이 명확해집니다.
@
구분자
echo "path: /usr/local/bin" | sed 's@/usr/local/bin@/opt/bin@g'
여기서는 @
를 사용하여 원본 문자열과 대체 문자열을 더 명확하게 구분합니다.
|
구분자
echo "path: /usr/local/bin" | sed 's|/usr/local/bin|/opt/bin|g'
|
를 구분자로 사용하여 가독성을 높입니다.
#
구분자
echo "path: /usr/local/bin" | sed 's#/usr/local/bin#/opt/bin#g'
#
를 구분자로 사용하여 가독성을 높입니다.
구분자 선택 기준
- 가독성: 스크립트를 읽고 이해하기 쉽도록 구분자를 선택합니다.
- 충돌 회피: 원본 문자열이나 대체 문자열에 포함된 문자가 구분자로 사용되지 않도록 합니다.
예제의 해석
처음에 제공된 예제 명령어는 다음과 같습니다:
(cd && ls -d */) | sed 's@^@$HOME/@g'
이 명령어에서는 @
를 구분자로 사용합니다. 각 부분을 해석하면 다음과 같습니다:
s@^@$HOME/@g
: 줄의 시작(^
)을$HOME/
로 대체합니다.@
는 구분자로 사용되어^
와$HOME/
을 구분합니다.
정리
이와 같이 sed
명령어에서 구분자는 가독성을 높이고 실수를 줄이는 데 중요한 역할을 합니다. 구분자를 적절히 선택하여 텍스트를 처리하면 더 효율적이고 오류 없는 작업이 가능합니다.
'Linuxpia > 리눅스 사용 팁' 카테고리의 다른 글
[리눅스명령어] 리눅스명령어 yes (40) | 2024.05.30 |
---|---|
[리눅스 팁] 테스팅용 파일 생성, shuf과 pwgen 활용 (33) | 2024.05.29 |
[리눅스 팁] Asciidoc 사용법 (44) | 2024.05.23 |
[리눅스 팁] tee 명령으로 중간 결과 확인하기 (47) | 2024.05.20 |
[리눅스 팁] 북구 불가능한 명령을 미리 확인하기 (42) | 2024.05.19 |