\u
뭔가가 포함된 문자열을 찾아 여기에 뭔가를 추가하려고 합니다 .
예를 들어,
$ echo \user | sed 's/\us/\\usX/' -
올바르게 생성됨
\usXer
그러나 파일의 내용이 있고 다음 코드를 사용하여 입력하면
$ sed -i 's/\us/\\usX/' test
알겠어요
\\usXer
그러면 문제가 이스케이프된 백슬래시이고 이것이 필요하지 않다고 가정할 수 있습니다. 그러나 이를 제거하면 명령의 \u
(대문자) 대체 만 트리거됩니다 .s
sed
\u
그렇다면 삽입 시퀀스를 사용하는 올바른 방법은 무엇입니까 sed
?
답변1
먼저 sed 's/\us/…/'
를 검색하지 않습니다 . \us
을 us
검색하려면 \us
을 사용해야 합니다 sed 's/\\us/…/'
.
특수 문자가 포함된 문자열을 검색하는 경우다음에 추가이에 대한 유용한 기술은 문자를 사용하여 &
검색 중인 문자열을 참조하는 것입니다. 예를 들어,
$ sed -i 's/\\us/&X/' test
일반적으로 말하면 &
("찾을 내용"이라고도 함)은 검색 문자열과 일치하는 패턴 공간 부분을 나타냅니다. 이는 검색 문자열이 단순한 정규 표현식이 아닌 경우에 더 유용합니다.
$ echo You say goodbye and I say hello. | sed 's/[gh][a-z]*[eo]/"&"/g'
You say "goodbye" and I say "hello".
's/\\usmthing/…/'
검색 방법과 마찬가지로 삽입 방법을 \usmthing
사용해야 합니다 . 예를 들어,'s/…/\\usmthing/'
\usmthing
$ 에코 sh|sed 's/oo/\ulish/' 블리쉬 ←알아채다\ul놓는다'로 해석된다.'엘'입력하다수도". $ 에코 sh|sed 's/oo/\\ulish/' 브루스