답변:
사전 순으로 행을 정렬하지 않은 경우 사전 순으로 정렬하고 다음 단계를 수행합니다.
(관련 질문에 따라 정규식을 사용하여 파일에서 중복 된 행을 어떻게 찾고 제거합니까? )
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 줄 찾기를했습니다. :(