sed 정규식을 사용할 때 교체 프로세스 중에 실제로 변경하지 않고 검색어에 구두점을 사용할 수 있는 방법이 있습니까?

sed 정규식을 사용할 때 교체 프로세스 중에 실제로 변경하지 않고 검색어에 구두점을 사용할 수 있는 방법이 있습니까?

구두점을 그대로 유지하면서 XOrg[ ,.;]를 X-Org[로 바꾸고 싶다고 가정해 보겠습니다. 따라서 XOrg는 X-Org를 제공하고 "XOrg"는 "X-Org"를 제공하는 식입니다.

Linux 터미널에서 sed를 사용하여 이를 수행할 수 있는 방법이 있습니까?

이제 난 할 수 있어

  sed -r 's/XOrg[ ,.;]/X-Org/g'

하지만 여기서는 반대쪽 끝에 어떤 구두점을 표시할지 선택해야 합니다. 찾은 구두점을 유지하도록 어떻게 말합니까?

답변1

방금 여기서 답을 찾았습니다.http://www.grymoire.com/Unix/Sed.html#uh-4a

검색어를 일련의 문자(예: 구두점 및 공백)로 구분하고 이러한 문자를 바꾸지 않고 출력에 유지하려면 다음 구성을 사용할 수 있습니다.

    sed -r 's/([group1])term([group2])/\1output\2/g' 

여기서 ([groupx])는 ([ ,.;)(]) 또는 ([[:punct:] ])일 수 있습니다.

전임자.

   echo dep\!|sed -r 's/dep([ ,.;)!])/dependency\1/' 

줄 것이다: 뎁! -> 의존!

  echo ' dep,'|sed -r 's/([[:punct:] ])dep([[:punct:] ])/\1dependency\2/' 

'dep' -> '종속성'을 제공합니다.

관련 정보