Vim: 해당 줄의 다른 일치 항목을 기반으로 교체

Vim: 해당 줄의 다른 일치 항목을 기반으로 교체

교체해야 할 상당히 큰 파일이 있지만 해당 행이 이미 패턴으로 포함된 경우에만 NX가능 합니다. 지금까지는 먼저 with 항목을 검색하여 수동으로 이 작업을 수행했습니다 .N1NXNX

/NX

그런 다음 사용

'<,'>s/N1/NX

하지만 이 파일들은 정말 크고 길기 때문에 이 수작업 과정에서 제가 실수할 가능성이 매우 높습니다. Vim에서 이 작업을 보다 효율적으로 수행할 수 있는 방법이 있나요?

다음은 파일의 한 줄 예입니다.

S22Tg    K1B12N1Tg    D1AE22K5    K2B12N1Tg    D1AE22K6    W01B12N1Tg    D1AE22TDNXW01    W02B12N1Tg    D1AE22TDNXW02    W03B12N1Tg

이 줄은 모두 매우 유사하며 문자 뒤에 나타나는 숫자만 다릅니다.

답변1

Vim에서는 다음을 포함하는 줄로 대체를 제한할 수 있습니다 NX.

:g/NX/s/N1/NX/

대체 항목 앞에 추가하면 /NX/Vim은 해당 항목이 포함된 다음 줄에서만 해당 항목을 실행합니다 NX(사용범위) 및 사용:g일치하는 모든 행에서 실행되도록 하십시오 NX.

답변2

이 작업을 수행하기 위해 반드시 vim에서 파일을 열 필요는 없습니다. 명령줄에서 이 작업을 수행 sed '/NX/s/N1/NX/g' <filename> >> <newfilename> 하고 이름을 <newfilename>원본 파일로 바꿀 수 있습니다.

관련 정보