是否有等同于 Unix uniq 的 Windows?

Yu *_*aao 19 windows sorting uniq

我需要从文本文件中删除重复的行,这在 Linux 中使用很简单

cat file.txt |sort | uniq
Run Code Online (Sandbox Code Playgroud)

当 file.txt 包含

aaa
bbb
aaa
ccc
Run Code Online (Sandbox Code Playgroud)

它会输出

aaa
bbb
ccc
Run Code Online (Sandbox Code Playgroud)

有 Windows 等价物吗?或者如何以 Windows 方式执行此操作?

Yu *_*aao 35

Sort-ObjectPowerShell 中的cmdlet 支持一个-Unique开关,它的作用与uniq

Get-Content file.txt | Sort-Object -unique
Run Code Online (Sandbox Code Playgroud)

当然,由于PowerShell中存在别名,你也可以这样写:

type file.txt | sort -unique
Run Code Online (Sandbox Code Playgroud)

此外,Windows 10有一个未记录的/unique切换sort.exe,因此,这应该在命令提示符下工作:

type file.txt | sort /unique
Run Code Online (Sandbox Code Playgroud)

  • @BenVoigt 令人惊讶的是,`type file.txt | sort /unique` 与 `sort.exe` 实用程序的 _undocumented_ 开关 `/unique` 一起使用(至少在 Windows 10 上)。另一方面,提供的示例是 PowerShell `Get-Content file.txt | 是对的。Sort-Object -unique`,事实上。 (7认同)
  • @JosefZ 嗯,我为此打开了一个[bug](https://github.com/MicrosoftDocs/windowsserverdocs/issues/3858),现在它*已*[记录](https://docs.microsoft.com/ en-us/windows-server/administration/windows-commands/sort) (4认同)
  • Windows 7 Enterprise 上出现“sort /unique”错误和“Invalid switch.”。 (3认同)
  • 我不认为 Windows 命令(`sort.exe`)支持这个;它看起来像是 PowerShell 内置的一个功能。 (2认同)
  • 输入 unsorted.txt | sort -unique > Sorted.txt 这在 win10 下确实有效,并将唯一值写入新文件 (2认同)

Jou*_*eek 6

uniq 的端口与 gnu/coreutils 版本的工作方式相同。我个人使用GOW的变体,但 git for windows 有一个明显更新的版本。虽然后者不需要 cygwin,但您需要查看 /usr/bin

由于这些包还包含 cat、sort 和 uniq - 您的工作流程应该大致相同,并且cat file.txt |sort | uniq应该大致相同