반응형
sed 전체 단어 검색 및 교체
sed를 사용하여 전체 단어를 검색하고 바꾸려면 어떻게합니까?
하기
sed -i 's/[oldtext]/[newtext]/g' <file>
또한 [oldtext]
내가 원하지 않는 부분 일치를 대체 합니다.
정규식에서 \ b는 단어 경계 (즉, 첫 단어와 비 단어 사이의 위치)와 일치합니다.
$ echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
no bar embarassment
Mac OS X에서는 이러한 정규식 구문이 sed 에서 작동 하여 전체 단어를 일치 시키지 않습니다.
\bmyWord\b
\<myWord\>
지금 내 말을 듣고 나중에 믿으세요. 이 추악한 구문을 사용해야합니다.
/[[:<:]]myWord[[:>:]]/
예를 들어, 전체 단어에 대해서만 민트 를 민트 로 바꾸려면 :
sed "s/[[:<:]]mint[[:>:]]/minty/g"
출처 : re_format 매뉴얼 페이지
사용 \b
단어 경계를 위해 :
sed -i 's/\boldtext\b/newtext/g' <file>
내 컴퓨터 중 하나에서 " \b
"(따옴표없이)로 단어를 구분 해도 작동하지 않았습니다. 해결책은 \<
분리 문자를 시작 하기 위해 " " 를 사용 하고 \>
분리 문자를 끝내기 위해 " "를 사용하는 것입니다.
Joakim Lundberg 의 예 를 설명하려면 :
$ echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
no bar embarassment
쉘 명령에서 :
echo "bar embarassment" | sed "s/\bbar\b/no bar/g"
또는:
echo "bar embarassment" | sed "s/\<bar\>/no bar/g"
그러나 vim에 있다면 나중에 사용할 수 있습니다.
:% s/\<old\>/new/g
$ echo "bar embarassment"|awk '{for(o=1;o<=NF;o++)if($o=="bar")$o="no bar"}1'
no bar embarassment
참고 URL : https://stackoverflow.com/questions/1032023/sed-whole-word-search-and-replace
반응형
'Programming' 카테고리의 다른 글
HTTPPOST, 사전 또는에서 양식 값을 검색하는 방법은 무엇입니까? (0) | 2020.08.06 |
---|---|
Gradle을 사용하여 종속성이있는 jar 작성 (0) | 2020.08.06 |
Android Studio에서 실행 버튼이 비활성화 됨 (0) | 2020.08.06 |
TextinputLayout의 레이블 색상을 변경하고 android 텍스트 밑줄을 편집하는 방법 (0) | 2020.08.06 |
git : 한 리포지토리의 커밋에 의해 도입 된 변경 사항을 다른 리포지토리에 적용 (0) | 2020.08.06 |