vim의 패턴 이해 [중복]

vim의 패턴 이해 [중복]

다음 파일이 있습니다.

8635147+876+5597+1686+54=8643360
2415+382376+88324+81544+926+68619475+677+222852=69398589
80+21+4478882+8945092=13424075
62+9598=9660
16832904+537+51460155+6822+2+4901436+47443+5669+855928+8113549+424282=82648727
33+9872=9905
555839
5017598+5639262+4+62+9413+4+4991+41568=10712902
4977+164+77+1018643+593851+83730=1701442
220+6831+26=7077
5+54102+1034451=1088558
37844
1
35+2983325+0+6400=2989760
8081+8361365+6+477=8369929
66+68232+9406935+6489662=15964895
6569+59336692+75+11328=59354664
28332+725+2683+45913425+9648987+4911=55599063
69724687+8+7+9940+5568+29585+518916=70288711
1804642
659157+5144361+7072+16+4799+811+58742059+451875+138174=65148324
2288508+509472+43+83704=2881727
872027+1115415+1+47922+547008+56+5550+71642773+948394=75179146
142

나는 그것을 다음과 같이 분류하고 싶다 vim.

16832904+537+51460155+6822+2+4901436+47443+5669+855928+8113549+424282=82648727
872027+1115415+1+47922+547008+56+5550+71642773+948394=75179146
69724687+8+7+9940+5568+29585+518916=70288711
2415+382376+88324+81544+926+68619475+677+222852=69398589
659157+5144361+7072+16+4799+811+58742059+451875+138174=65148324
6569+59336692+75+11328=59354664
28332+725+2683+45913425+9648987+4911=55599063
66+68232+9406935+6489662=15964895
80+21+4478882+8945092=13424075
5017598+5639262+4+62+9413+4+4991+41568=10712902
8635147+876+5597+1686+54=8643360
8081+8361365+6+477=8369929
35+2983325+0+6400=2989760
2288508+509472+43+83704=2881727
1804642
4977+164+77+1018643+593851+83730=1701442
5+54102+1034451=1088558
555839
37844
33+9872=9905
62+9598=9660
220+6831+26=7077
142
1

나는 그것을 할 수 있습니다 :sor!n/.*\</. 내가 이해하는 바에 따르면 \<의미는 단어의 시작입니다. 하지만 단순히 :sor!n/.*=/일만 하면 안 될까요? 또는 패턴의 특수 문자인 경우 작동하고 =싶지만 오류가 발생합니다.:sor!n/.*\=/NFA regex

답변1

이 방법이 가장 적합할 수 있습니다.https://vi.stackexchange.com/

하지만 어쨌든, :h :sort그것은 실제로 무슨 일이 일어나고 있는지 설명합니다.

If a {pattern} is used, any lines which don't have a
match for {pattern} are kept in their current order,
but separate from the lines which do match {pattern}.
If you sorted in reverse, they will be in reverse
order after the sorted lines, otherwise they will be
in their original order, right before the sorted
lines.

즉, .*\<입력의 모든 줄을 일치시키고 :sort모든 줄에서 실행합니다.

.*=포함된 행만 일치 하더라도 =이러한 행은 정렬됩니다 :sort. 나머지 모든 줄(패턴과 일치하지 않는 줄):

142
1804642
1
37844
555839

정렬되지 않았지만 파일 시작 부분에 직접 덤프되었습니다. 사용한 모든 줄은 !역순이므로 파일 끝에서 역순으로 끝납니다.

답변2

보충하다Grochmar의 훌륭한 답변,당신이 사용할 수있는

:sort!n/.*=\|^/

또는:

:sort!n/[^=]*$/r

원하는 결과를 얻으려면.

\=오류가 발생하는 이유는 명령에서도 사용할 수 있다는 vim점만 제외하고 입니다. 잘못된 정규식과 동일합니다 .\??.*\=.*\?

관련 정보