Unix 如何计算文件内容差异?
我有两个文件Unix 如何计算文件内容差异?,unix,sed,grep,Unix,Sed,Grep,我有两个文件large\u input和subset\u input文件,它们的内容可以是 large\u输入 1 34 65 7643 hello we 65 we hello 34 subset\u输入 1 34 65 7643 hello we 65 we hello 34 在这种情况下,sort命令没有多大帮助,否则在diff之后对两个文件执行sort | uniq将非常有用 问题 在这种情况下,由于数据的内容而无法对其进行排序,那么最好的方法是什么 large\u input-
large\u input
和subset\u input
文件,它们的内容可以是
large\u输入
1
34
65
7643
hello
we
65
we
hello
34
subset\u输入
1
34
65
7643
hello
we
65
we
hello
34
在这种情况下,sort
命令没有多大帮助,否则在diff
之后对两个文件执行sort | uniq
将非常有用
问题
在这种情况下,由于数据的内容而无法对其进行排序,那么最好的方法是什么
large\u input
-subset\u input
哪个是
1
7643
有些shell不支持
您可以使用sed生成执行此任务的sed脚本:
sed -e 's#^#/^#' -e 's#$#$/d#' subset_input > sed_script
然后,将此sed脚本应用于大型_输入很容易:
sed -f sed_script large_input
如果您有bash,则无需临时文件即可完成:
sed -f <(sed -e 's#^#/^#' -e 's#$#$/d#' subset_input) large_input
sed-f这正是它的用途:
comm -23 <(sort large_input) <(sort subset_input)
comm-23为什么sort | uniq
不起作用?我完全按照你说的做了,得到了如下结论:0a1>12a4>7643
作为差异。也许你想试试sort-g
为什么sort
没有帮助?它将按字典顺序对其进行排序,但这并不重要;如果您只想进行设置差异,那么确切的顺序应该无关紧要,只要它是一致的。sort-g
成功了,谢谢@skjaidev。