我有两个纯文本文件,每个文件包含按字母顺序排序的字符串列表,每行一个字符串。我想比较这两个文件,并输出仅存在于文件 2 中的所有字符串。
我希望该操作无需任何第三方工具即可完成,或者只需安装在 Windows 命令行环境中可以“正常”找到的工具(如 GNU Diffutils、Powershell 等)。输出应为文本形式(文件或命令行输出)。
例子:
File 1 contents:
A
C
D
File 2 contents:
A
B
C
E
Result wanted:
B
E
答案1
通信 -13 文件_a 文件_b
(-13
是-1
-3
)
差异 ab | grep "^>"
差异 ab | sed -n“/^>/ s/^> //p”
你可以从Unx工具类——是的,已经过时了,但是对于这个来说已经足够了。
答案2
在 Windows PowerShell 中(直接端口grawity 的 diff/grep 组合):
Compare-Object (Get-Content file1) (Get-Content file2) |
Where-Object { $_.SideIndicator -eq '=>' } |
Select-Object -ExpandProperty InputObject
这可以缩写为:
diff (gc file1) (gc file2) | ?{$_.SideIndicator -eq '=>'} | %{$_.InputObject}
或者如果您经常需要它,可以将其包装在一个函数中。