sed를 사용하여 \u를 삽입하는 올바른 방법은 무엇입니까?

sed를 사용하여 \u를 삽입하는 올바른 방법은 무엇입니까?

\u뭔가가 포함된 문자열을 찾아 여기에 뭔가를 추가하려고 합니다 .

예를 들어,

$ echo \user | sed 's/\us/\\usX/' -

올바르게 생성됨

\usXer

그러나 파일의 내용이 있고 다음 코드를 사용하여 입력하면

$ sed -i 's/\us/\\usX/' test

알겠어요

\\usXer

그러면 문제가 이스케이프된 백슬래시이고 이것이 필요하지 않다고 가정할 수 있습니다. 그러나 이를 제거하면 명령의 \u(대문자) 대체 만 트리거됩니다 .ssed

\u그렇다면 삽입 시퀀스를 사용하는 올바른 방법은 무엇입니까 sed?

답변1

먼저 sed 's/\us/…/'를 검색하지 않습니다 . \usus검색하려면 \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/'
브루스

관련 정보