Saltar al contenido

¿Existe un equivalente de Windows para Unix uniq?

Nuestro equipo de especialistas despúes de varios días de investigación y de recopilar de datos, encontramos la solución, nuestro deseo es que resulte útil para ti en tu trabajo.

Solución:

los Sort-Object cmdlet en PowerShell admite un -Unique interruptor que hace lo mismo que uniq:

Get-Content file.txt | Sort-Object -unique

Por supuesto, debido a la presencia de alias en PowerShell, también puede escribir:

type file.txt | sort -unique

Además, hay un indocumentado /unique cambiar en sort.exe de Windows 10, entonces, esto debería funcionar en el símbolo del sistema:

type file.txt | sort /unique

Hay puertos de uniq que funcionan de manera idéntica a las versiones de gnu/coreutils. Yo personalmente uso la variación de GOW pero git para Windows tiene una versión significativamente más nueva. No se requiere cygwin, aunque para este último debe buscar en /usr/bin

Dado que estos paquetes también contienen cat, sort y uniq, su flujo de trabajo debe ser prácticamente idéntico y cat file.txt |sort | uniq debería funcionar en su mayoría de manera idéntica

Puede escribir fácilmente el comando “uniq” usted mismo. Guárdelo en un archivo por lotes “uniq.cmd” en algún lugar de su %path% para encontrarlo (por ejemplo, en %windir%system32). Esta versión NO distingue entre mayúsculas y minúsculas:

@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:<=

Esto funciona con "uniq mytextfile" así como con "cat mytextfile | uniq"; ya que todas las entradas y argumentos simplemente se pasan al comando de ordenación.

A partir de Windows 7, es posible que desee una versión que realmente distinga entre mayúsculas y minúsculas (la diferencia es un interruptor no documentado "sort /C" y no "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:<=

Te invitamos a añadir valor a nuestro contenido informacional colaborando tu experiencia en las ilustraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología