两个目录中的每一个都有一个或多个文本文件,A:和B :. 目的是打印一个包含A:中只存在的所有行的文本文件。
(每个文本文件最多可以包含2百万行,如果A:有两个或更多的唯一行(即只在A:而不是在B:中)彼此相同,那么只有其中一行需要被列在unique.txt输出中,order [sort]的列表并不重要。)
感谢列文Keersmaekers下面的脚本(干净和快速)。 然而,我似乎在unique.txt文件中被截断(在字符120;或包装),而不是完全按照A:中的方式打印整个唯一行。
compare -r $(gc C:a*.txt | sort -u) -d $(gc C:b*.txt | sort -u) | ? {$_.SideIndicator -eq '<='} | select inputobject | Out-File unique.txt
我试图与这些玩,以获得完整的,未包装的线,但没有成功:
当传递的参数有引号时使用DOS启动命令
学习控制台命令的重要性
我怎样才能通过CMD最大化一个特定的窗口?(窗口)
在Java中使用cmd复制文件时出现问题
Format-Table -Wrap -AutoSize |
我做错了什么? Windows cmd行或PowerShell将工作。
这个gcc编译器命令中的-z选项是什么?
使用man命令描述我的文件
如何从Windows命令行运行python文件(.py)而不必先键入python?
在bash脚本中,在脚本退出后的提示符上打印命令(作为build议)
以下可能会让你开始。
短版本(使用别名)
compare -r $(gc C:a*.txt | sort -u) -d $(gc C:b*.txt | sort -u) | ? {$_.SideIndicator -eq '<='} | select -expand inputobject | Out-File unique.txt
长版
Compare-Object -ReferenceObject $(Get-Content C:a*.txt | sort-object -Unique) -DifferenceObject $(Get-Content C:b*.txt | sort-object -Unique) | Where-Object {$PSItem.SideIndicator -eq '<='} | Select-Object -ExpandProperty inputobject | Out-File unique.txt
请注意,我不能动摇与<=的比较的能力,应该更好地处理,但我不能轻易找到一种方法。
使用sort -u , bash和combine :
combine <(sort -ua/* ) not <(sort -ub/*)
上面假定不需要重复行,并且Windows文件系统安装在Linux机器上,或者可以从Linux机器访问。
请注意, combine不需要排序数据,它可以以任意顺序显示来自A:*行,并返回未排序的输出,例如:
combine <(cat a/*) not <(cat b/*)
…但是这失去了不显示重复行的属性,如果A:*包含比B:*更多的给定行的重复项。
$inB = [system.collections.generic.HashSet[string]]::new([string[]](Get-Content B* | select -unique)) Get-Content A* | Where-Object { ! $inB.Contains($_) } | Out-File onlyinA.txt
但是,您将支付B中所有文件的所有唯一行。 唯一的解决办法就是过滤A中的行,然后删除B中更多的行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。