nei*_*ilH 8 command-line scripting bash diff
我最初生成两个包含 URL 列表的文件——我将它们称为old
和new
。我想比较这两个文件,如果文件中有任何new
不在文件中的URL old
,我希望将它们显示在extra_urls
文件中。
现在,我已经阅读了一些有关使用该diff
命令的内容,但据我所知,这也分析了信息的顺序。我不希望订单对输出产生任何影响。我只想将额外的 URLnew
打印到extra_urls
文件中,无论它们在其他两个文件中的任何一个中放置的顺序如何。
我怎样才能做到这一点?
Bar*_*mar 14
您可以使用该comm
命令来比较两个文件,并有选择地显示一个或另一个唯一的行,或共同的行。它要求对输入进行排序,但您可以使用流程替换对它们进行动态排序。
comm -13 <(sort old.txt) <(sort new.txt)
Run Code Online (Sandbox Code Playgroud)
如果您使用的版本bash
不支持进程替换,则可以使用命名管道对其进行模拟。维基百科中显示了一个示例。
我只会使用grep
:
grep -vFf old new > extra_urls
Run Code Online (Sandbox Code Playgroud)
-f
: 告诉grep
从文件中读取其搜索模式。在这种情况下,old
。-v
: 告诉 grep 反转匹配,只打印不匹配的行。 -F
: 告诉 grep 将其搜索模式解释为字符串,而不是正则表达式。这样,.
URL 的 将逐字匹配。结合起来,这些可以grep
打印new
不在old
. 文件中 URL 的顺序无关紧要。
归档时间: |
|
查看次数: |
1424 次 |
最近记录: |