답변:
사전 순으로 행을 정렬하지 않은 경우 사전 순으로 정렬하고 다음 단계를 수행합니다.
(관련 질문에 따라 정규식을 사용하여 파일에서 중복 된 행을 어떻게 찾고 제거합니까? )
Control+F
"바꾸기 모드"전환
"정규식 사용"( .*
기호가 있는 아이콘 )을 전환합니다.
에서 검색 필드에 입력^(.*)(\n\1)+$
" 바꿀 내용 "필드에 다음을 입력합니다.$1
이 경우 VS Code 외부의 솔루션 ( 여기 참조 )을 사용하거나-문서가 너무 크지 않고 모두 바꾸기 단추를 스팸해도 괜찮다면 이전 단계를 따르되 4 단계와 5 단계에서 수행하십시오. 다음을 입력하십시오
( 정렬하지 않고 특정 중복 줄 제거 기준 )
주의 : 너무 많은 줄 (1000+)이있는 파일에 대한 블록; VS 코드가 충돌 할 수 있습니다. 경우에 따라 빈 줄이 생길 수 있습니다.
검색 :((^[^\S$]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\n)?
다음으로 대체 :$1
그런 다음 중복 항목이있는만큼 "모두 바꾸기"버튼을 클릭합니다 .
버튼을 클릭했을 때 줄 수가 줄어들지 않으면 충분하다는 것을 알 수 있습니다. 문서의 마지막 줄로 이동하여 계속 확인하십시오.
^(.*)(\n\1)+$
? 중복 행을 제거한 후 csv에서 첫 번째 열이 중복 된 모든 행을보고 정규식을 수정하고 싶습니다.
\r?
대답은 다른 답변 의 비트가 실제로 필요하지 않다는 점에서만 다릅니다 .
다음은 매우 흥미로운 확장입니다. Transformer
풍모:
중복 줄 제거 :
문서에서 중복 된 줄을 제거합니다.
선택이없는 경우 선택 또는 현재 블록에서 작동
"Unique Lines"명령 외에는 많이 사용하지 않았지만 꽤 잘된 것 같습니다 (매크로 레코더 시도 포함!).
@ Marc.2377의 답장에 추가하려면.
순서가 중요하고 중복 된 줄의 마지막 줄만 유지하는 데 신경 쓰지 않는 경우 비어 있지 않은 중복 줄만 제거하려면 다음 정규식을 검색하면됩니다.
^(.+\n)(?=(?:.*\n)*?\1)
중복 된 빈 줄도 제거하려면 *
대신 사용하십시오.+
^(.*\n)(?=(?:.*\n)*?\1)
아무것도 교체하지 마십시오.
이것은 한 줄을 취하고 더 많은 (아마도 0) 줄을 찾은 다음 정확히 동일한 줄을 찾으려고 시도합니다. 취한 선을 제거합니다.
이것은 일회성 정규식입니다. 교체 버튼을 스팸 할 필요가 없습니다.
^(.+\n)(?=(?:.*\n)*?\1)
대신 정규식이 예상치 못한 빈 줄을 제거했기 때문에 권장 합니다. 어쨌든 찬성했습니다.
xxx(?=…)
미리보기 경기입니다. 따라서 "xxx"뒤에 오는 모든 것이 "…"와 일치하지만 검색을 진행하지는 않습니다. (?:…)
대괄호 수에 포함되지 않는 대괄호입니다. .*\n
(비어있을 수도 있음) 줄의 패턴입니다. *
여러 줄이있을 수도 있고 없을 수도 있음을 의미합니다. ?
별표 후 ( *
) 수단 우리는 가능한 한 적은 수의 선으로 원하는. 로 \1
이 식을 다음과 효과는 우리가 일치하지 않는 모든 라인에 대해 미리 보는 것입니다 \1
우리가 라인 매칭을 찾을 때까지 \1
. 이것이 분명해지기를 바랍니다.
방금 동일한 문제가 발생하여 Visual Studio Code 패키지 "Sort lines"을 발견했습니다. 자세한 내용은 Visual Studio Code 마켓 플레이스를 참조하세요 (예 : 정렬 라인 ).
이 패키지에는 "Sorting lines (unique)"옵션이 있습니다. 줄의 시작 / 끝에있는 모든 공백을 처리하십시오. 라인이 고유 한 것으로 간주되는지 여부에 영향을줍니다.
DupChecker 확장을 설치하고를 누르고F1 "중복 확인"을 입력합니다.
중복을 확인하고 제거 할 것인지 묻습니다.
실제로 Visual Studio Code에서는 아니지만 작동하면 작동합니다.
Visual Studio Code를 지정 했으므로 가장 좋은 대답은 아니지만 내가 말했듯이 작동하면 작동합니다. :)
((^[^\S\r\n]*?(?=\S)(?:.*)+$)[\S\s]*?)^\2$(?:\r?\n)?
내 vscode 충돌을 만들었습니다 .... 한 파일에서 229 줄 찾기를했습니다. :(