Sed: 마침표 무시

Sed: 마침표 무시

마침표를 일치시킬 수 있다는 것을 알고 있지만 \.시행착오를 통해 여전히 마침표 문자를 무시하는 패턴을 얻을 수 없는 것 같습니다.

나는 다음과 같은 다양한 변형을 시도했습니다.

\[^.] \[^.]+

이런 코드를 원해요

foo("some text").arg("more text");

동일하게 유지되지만 코드는 다음과 같습니다.

foo("some text");

패턴을 일치시키고 다른 것으로 교체하세요.

그리고 또 다른 문제에 부딪혔어요

사례 예:

tr("I am some text") .arg(i do stuff) .arg(I also do stuff) 2~n개의 행을 처리해야 합니다.

현재로서는 tr이 제거되고 구문 오류가 발생하기 때문에 이러한 텍스트를 유지하고 싶습니다.

답변1

"비 마침표"가 되려면 순서가 [^.]원하는 것입니다. 귀하의 예에서는 \앞에 하나가 있는데 [이는 잘못된 것입니다.

예를 들면 다음과 같습니다.

foo("some text").arg("more text");
foo("some text");

% sed 's/foo("some text")[^.]/replaced text/' tstfile
foo("some text").arg("more text");
replaced text

이는 다음 문자도 대체합니다 foo(..). 그것을 유지하고 싶다면 우리는 그것을 기억할 수 있습니다:

% sed 's/foo("some text")\([^.]\)/replaced text\1/' tstfile
foo("some text").arg("more text");
replaced text;

관련 정보