sed 교체

sed 교체

다음과 같은 문자열이 있습니다.

/test/test/ 12 /test/test

내 목표는 이것을 다음과 같이 바꾸는 것입니다.

/test/est/ 12 /test/test

이것은 명령입니다:

echo "$x" | sed 's@\(/*/\).@\1@g'"

지금 사용하고 있는데 "/"의 두 번째 인스턴스 대신 모든 곳에 적용됩니다.

답변1

Steeldriver가 말했듯이 GNU sed를 사용하면 어떤 항목을 교체해야 하는지 알 수 있습니다. 예를 들면 다음과 같습니다.

echo "/test/test/ 12 /test/test" | sed -n -e  's_/._/_2 p' 

이 기능을 사용할 수 없다면 다음과 같이 작성할 수도 있습니다.

echo "/test/test/ 12 /test/test" | sed -n -r -e  's_(/[a-z]([a-z]+))\1_\1/\2_ p'

서지:http://www.grymoire.com/Unix/Sed.html[패턴의 일부를 보존하려면 \1을 사용하세요.]

답변2

echo "/test/test/ 12 /test/test" | sed 's/\/test\/t/\/test\//'

답변3

좋고 편해요...

sed -n "s/test/est/2p"
  • -n 아무것도 인쇄하지 않음
  • s/대체
  • "테스트"와 "est"
  • /2 그러나 두 번째 인스턴스만
  • p 인쇄 결과

관련 정보