다음과 같은 문자열이 있습니다.
/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 인쇄 결과