J'ai besoin de supprimer les lignes en double d'un fichier texte, c'est simple sous Linux en utilisant
cat file.txt |sort | uniq
lorsque file.txt contient
aaa
bbb
aaa
ccc
Il produira
aaa
bbb
ccc
Existe-t-il un équivalent Windows? ou comment faire cela à la manière de Windows?
sort -u file.txt
Réponses:
L'
Sort-Object
applet de commande dans PowerShell prend en charge un-Unique
commutateur qui fait la même chose queuniq
:Bien sûr, en raison de la présence d'alias dans PowerShell, vous pouvez également écrire:
De plus, il existe un
/unique
commutateur non documenté danssort.exe
Windows 10, donc cela devrait fonctionner dans l'invite de commandes:la source
sort.exe
) le supporte; il ressemble à une fonctionnalité du module intégré PowerShell.type file.txt | sort /unique
fonctionne avec sans papier commutateur/unique
d'sort.exe
utilité (au moins sous Windows 10). De l'autre côté, vous avez raison, l'exemple fourni est PowerShellGet-Content file.txt | Sort-Object -unique
, en fait.sort /unique
des erreurs avecInvalid switch.
sur Windows 7 Enterprise.Il existe des ports d'uniq qui fonctionnent de manière identique aux versions gnu / coreutils. Personnellement, j'utilise la variation de GOW, mais git pour Windows a une version considérablement plus récente . Aucun cygwin requis cependant pour ce dernier, vous devez regarder dans / usr / bin
Étant donné que ces packages contiennent également cat, sort et uniq - votre flux de travail doit être essentiellement identique et
cat file.txt |sort | uniq
fonctionner principalement de manière identiquela source
Vous pouvez facilement écrire vous-même la commande "uniq". Enregistrez-le dans un fichier batch "uniq.cmd" quelque part dans votre% path% peut le trouver (par exemple dans% windir% \ system32). Cette version n'est PAS sensible à la casse:
Cela fonctionne avec "uniq mytextfile" ainsi qu'avec "cat mytextfile | uniq"; car toutes les entrées et tous les arguments sont simplement passés à la commande sort.
À partir de Windows 7, vous voudrez peut-être une version vraiment sensible à la casse (la différence est le commutateur non documenté "sort / C" et non "if / i"):
la source
/?
,ON
,one ^ caret
oubang!
. Mais cela peut être résolu en utilisant la technique d'expansion retardée à bascule etecho(
voir: Dostips: ECHO. ÉCHEC de donner un texte ou une ligne viergeAjout à la réponse de Yu Jiaao. Vous pouvez appeler l'
sort-object
applet de commande powershell dans une invite de commande comme:la source