저는 파일 작업을 하고 있는데 vim 내에서 정규식을 사용하여 "문자열 A"와 "문자열 B"의 위치를 동시에 바꿔야 합니다. 다음은 코드 줄의 예입니다.
succ_1st=`grep 'resulted in successful answer' $path_tmp/named.stats.tmp | sed '/localhost.localdomain/,/testdns.net/{//!d}' | awk '{ print $1 }' |grep -m1 ''`
다음과 같이 표시되어야 합니다.
succ_1st=`sed '/localhost.localdomain/,/testdns.net/{//!d}' $path_tmp/named.stats.tmp | grep 'resulted in successful answer' | awk '{ print $1 }' | grep -m1 ''`
각 줄의 grep 및 sed 문은 동일합니다. 각 문의 위치만 바꾸면 됩니다. sed를 사용하여 파일 외부에서 이 작업을 수행할 수 있지만 정규식을 사용하여 vim 내부에서 수행할 수 있어야 합니다. 내가 시도한 것은 다음과 같습니다.
%s/grep 'search string'/sed '\/search string\/,\/search string\/{\/\/!d}'/g
이는 스왑이 아닌 대체만 수행합니다.
나는 또한 다음을 시도했습니다.
%s/\v(grep[^$]*)([$][^|]*)[|] (sed[^|]*)/\3\2| \1/
실패하고 반환됩니다:
E486: Pattern not found: \v(grep[^$]*)([$][^|]*)[|] (sed[^|]*)
중복이 아니므로 중복표시, 마감투표, 반대투표 등을 하지 말아주세요. 다른 모든 스레드는 이것을 처리하기 위해 sed를 사용하는데, 이는 내가 원하는 것이 아닙니다.
편집 - /usr/bin/vim을 가리키는 Vi 별칭을 사용하여 Vim을 호출하고 있다는 점에 유의하세요.