Necesito eliminar líneas duplicadas de un archivo de texto, es simple en Linux usando
cat file.txt |sort | uniq
cuando file.txt contiene
aaa
bbb
aaa
ccc
Saldrá
aaa
bbb
ccc
¿Hay un equivalente de Windows? o cómo hacer esto de una manera Windows?
sort -u file.txt
Respuestas:
El
Sort-Object
cmdlet en PowerShell admite un-Unique
conmutador que hace lo mismo queuniq
:Por supuesto, debido a la presencia de alias en PowerShell, también puede escribir:
Además, hay un
/unique
interruptor no documentado ensort.exe
Windows 10, por lo que esto debería funcionar en el símbolo del sistema:fuente
sort.exe
) sea compatible con esto; parece una característica de la construcción incorporada de PowerShell.type file.txt | sort /unique
funciona con indocumentado interruptor/unique
desort.exe
utilidad (por lo menos en Windows 10). Por otro lado, tiene razón en que el ejemplo proporcionado es PowerShellGet-Content file.txt | Sort-Object -unique
, de hecho.sort /unique
errores conInvalid switch.
en Windows 7 Enterprise.Hay puertos de uniq que funcionan de manera idéntica a las versiones gnu / coreutils. Personalmente uso la variación de GOW, pero git para Windows tiene una versión significativamente más nueva . No se requiere cygwin, pero para esto último debe buscar en / usr / bin
Dado que estos paquetes también contienen cat, sort y uniq, su flujo de trabajo debería ser en su mayoría idéntico, y
cat file.txt |sort | uniq
debería funcionar de manera idénticafuente
Puede escribir fácilmente el comando "uniq" usted mismo. Guarde esto en un archivo por lotes "uniq.cmd" en algún lugar de su% path% puede encontrarlo (por ejemplo, en% windir% \ system32). Esta versión NO distingue entre mayúsculas y minúsculas:
Esto funciona con "uniq mytextfile" y "cat mytextfile | uniq"; ya que todas las entradas y argumentos simplemente se pasan al comando de clasificación.
A partir de Windows 7, es posible que desee una versión realmente sensible a mayúsculas y minúsculas (la diferencia es que el interruptor no documentado "sort / C" y no "if / i"):
fuente
/?
,ON
,one ^ caret
obang!
. Pero eso se puede resolver mediante el uso de la técnica de alternancia de expansión retardada yecho(
ver: Dostips: ECHO. FALLA en dar texto o línea en blancoAdemás de la respuesta de Yu Jiaao. Puede invocar el
sort-object
cmdlet powershell en un símbolo del sistema como:fuente