Preciso remover linhas duplicadas de um arquivo de texto, é simples no Linux usando
cat file.txt |sort | uniq
quando file.txt contém
aaa
bbb
aaa
ccc
Irá produzir
aaa
bbb
ccc
Existe um equivalente do Windows? ou como fazer isso no Windows?
sort -u file.txt
Respostas:
O
Sort-Object
cmdlet no PowerShell suporta uma-Unique
opção que faz o mesmo queuniq
:Obviamente, devido à presença de aliases no PowerShell, você também pode escrever:
Além disso, há uma
/unique
opção não documentada nosort.exe
Windows 10, portanto, isso deve funcionar no prompt de comando:fonte
sort.exe
) suporte isso; parece um recurso do PowerShell embutido.type file.txt | sort /unique
funciona com opção de utilidade não documentada (pelo menos no Windows 10). Por outro lado, você está certo de que o exemplo fornecido é o PowerShell , de fato./unique
sort.exe
Get-Content file.txt | Sort-Object -unique
sort /unique
errosInvalid switch.
no Windows 7 Enterprise.Existem portas do uniq que funcionam de maneira idêntica às versões gnu / coreutils. Eu pessoalmente uso a variação do GOW, mas o git para windows tem uma versão significativamente mais nova . Não é necessário cygwin. Para este último, você precisa procurar em / usr / bin
Como esses pacotes também contêm cat, sort e uniq - seu fluxo de trabalho deve ser praticamente idêntico e
cat file.txt |sort | uniq
deve funcionar de maneira idênticafonte
Você pode escrever facilmente o comando "uniq" sozinho. Salve isso em um arquivo em lotes "uniq.cmd" em algum lugar do seu% path% pode encontrá-lo (por exemplo, em% windir% \ system32). Esta versão NÃO diferencia maiúsculas de minúsculas:
Isso funciona com "uniq mytextfile" e "cat mytextfile | uniq"; como todas as entradas e argumentos são simplesmente passados para o comando de classificação.
A partir do Windows 7, você pode querer uma versão com distinção entre maiúsculas e minúsculas (a diferença não é a opção não documentada "sort / C" e não "if / i"):
fonte
/?
,ON
,one ^ caret
oubang!
. Mas isso pode ser resolvido usando a técnica de expansão com atraso de alternância eecho(
consulte: Dostips: ECHO. Falha ao fornecer texto ou linha em brancoAlém da resposta de Yu Jiaao. Você pode invocar o
sort-object
cmdlet do powershell em um prompt de comando como:fonte