문자열의 특정 위치에서 문자 제거

문자열의 특정 위치에서 문자 제거

이는 너무 단순해 보이지만 여전히 달성하기는 불가능합니다. 나는 가지고있다:

-X-1.5

다음이 필요합니다.

-X1.5

사용:

echo -X-1.5 | tr -d '-'

다음을 제공합니다:

X1.5

가깝지만 충분히 가깝지는 않습니다.

여러분의 조언을 환영합니다.

답변1

또 다른 sed 솔루션

echo "-X-1.5" | sed 's/-//2'

-의 두 번째 항목을 다른 것으로 바꿉니다.

답변2

삭제하려는 문자가 위치 2(0부터 계산)에 있다는 것을 알고 있는 경우 다음을 수행할 수 있습니다.

VAR="-X-1.5"
echo "${VAR:0:2}${VAR:3}"

이것은 줄 것이다 -X1.5.

제거하려는 문자의 첫 번째 인스턴스이지만 사전에 위치를 모르는 경우 다음을 수행할 수 있습니다.

VAR="X-1.5-oh"
echo "${VAR/-/}"

이것은 줄 것이다 X1.5-oh.

답변3

제거할 부분이 시작 부분, 끝 부분 또는 완전히 제거되지 않기 때문에 알려진 패턴과 일치하는 보다 구체적인 부분을 선호하는 많은 일반적인 지름길을 배제하므로 실제로 패턴이 무엇인지에 따라 달라집니다. 될거야..

-X-예를 들어, 패턴을 제거 하려면 다음을 수행할 수 있습니다.

$ echo "-X-1.5" | sed 's/-X-/-X/g'

결과:

-X1.5
  • 찾다-X-
  • 다음으로 교체-X
  • /g탐욕스럽게 실행한다는 것은 만일의 경우를 대비해 그러한 모든 이벤트를 의미합니다 -X-1.5-X-2.5-X-3.5.

관련 정보