다음 파일이 있습니다.
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
점만 제외하고 입니다. 잘못된 정규식과 동일합니다 .\?
?
.*\=
.*\?