텍스트 파일에서 중복 줄을 제거해야합니다 .Linux에서는 간단합니다.
cat file.txt |sort | uniq
file.txt에
aaa
bbb
aaa
ccc
출력됩니다
aaa
bbb
ccc
Windows와 동등한 제품이 있습니까? 또는 Windows 방식으로 어떻게합니까?
텍스트 파일에서 중복 줄을 제거해야합니다 .Linux에서는 간단합니다.
cat file.txt |sort | uniq
file.txt에
aaa
bbb
aaa
ccc
출력됩니다
aaa
bbb
ccc
Windows와 동등한 제품이 있습니까? 또는 Windows 방식으로 어떻게합니까?
답변:
Sort-Object
PowerShell 의 cmdlet -Unique
은 다음과 같은 작업을 수행 하는 스위치를 지원합니다 uniq
.
Get-Content file.txt | Sort-Object -unique
물론 PowerShell에 별칭이 있기 때문에 다음과 같이 작성할 수도 있습니다.
type file.txt | sort -unique
또한 Windows 10 에는 문서화되지 않은 /unique
스위치가 sort.exe
있으므로 명령 프롬프트에서 작동합니다.
type file.txt | sort /unique
sort.exe
)이 이것을 지원 한다고 생각하지 않습니다 . PowerShell 기본 제공 기능처럼 보입니다.
type file.txt | sort /unique
작동 문서화되지 않은 스위치 /unique
의 sort.exe
(윈도우 10 이상) 유틸리티입니다. 반면에 제공된 예제는 Get-Content file.txt | Sort-Object -unique
실제로 PowerShell 입니다.
sort /unique
Invalid switch.
Windows 7 Enterprise에서 오류가 발생했습니다 .
"uniq"명령을 직접 작성할 수 있습니다. 이 파일을 % path % 어딘가에 배치 파일 "uniq.cmd"(예 : % windir % \ system32)에 저장하십시오. 이 버전은 대소 문자를 구분하지 않습니다 :
@echo off
setlocal DisableDelayedExpansion
set "prev="
for /f "delims=" %%F in ('sort %*') do (
rem "set" needs to be done without delayed expansion
set "line=%%F"
setlocal EnableDelayedExpansion
set "line=!line:<=<!"
if /i "!prev!" neq "!line!" echo(!line!
set "prev=!line!"
endlocal
)
이것은 "cat mytextfile | uniq"뿐만 아니라 "uniq mytextfile"에서도 작동합니다. 모든 입력과 인수는 단순히 sort 명령으로 전달됩니다.
Windows 7부터는 대소 문자를 구분하는 버전이 필요할 수 있습니다 (차이는 문서화되지 않은 스위치 "sort / C"와 "if / i"가 아님) :
@echo off
setlocal DisableDelayedExpansion
set "prev="
for /f "delims=" %%F in ('sort /C %*') do (
rem "set" needs to be done without delayed expansion
set "line=%%F"
setlocal EnableDelayedExpansion
set "line=!line:<=<!"
if "!prev!" neq "!line!" echo(!line!
set "prev=!line!"
endlocal
)
/?
, ON
, one ^ caret
또는 bang!
. 그러나 그것은 사용에 의해 해결 될 수있는 토글 지연 확장 기술을 하고 echo(
다음을 참조 Dostips : ECHO를. 텍스트 또는 빈 줄을 표시하지
sort -u file.txt