用于查找文件之间相似性的 Shell 脚本

发布于 2024-12-14 07:08:09 字数 94 浏览 0 评论 0原文

我有两个制表符分隔的文件,其中包含一个 ID 列和 20 个左右的变量。我想找到两个文件中都存在的ID。我要求的是与 bash 脚本“diff”相反的东西。任何建议表示赞赏。

I have two tab delimited files that consist of an ID column and then 20 or so variables. I would like to find those IDs which exist in both files. What I'm asking for is something like the opposite of the bash script 'diff'. Any advice is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

筱果果 2024-12-21 07:08:09

工具 comm 可能就是您想要的 - 给定来自两个文件的排序输入,它可以告诉您哪些行仅在文件 A 中,哪些行在两个文件中都存在,哪些行仅在文件 B 中。例如,如果您有 file-a ,即:

17 p o i u
13 a b c d
14 q w e r t 

... 和 file-b ,即:

18 a s d f 
13 f g h i
7 z x c v 

您可以使用 comm 进行进程替换以下方式:

$ comm -1 -2 <(cut -d ' ' -f 1 file-a|sort) <(cut -d ' ' -f 1 file-b|sort)
13

-1 参数抑制仅在第一个文件中的内容,-2 会抑制仅在第二个文件中的内容。

The tool comm may be what you want - given sorted input from two files, it can tell you which lines are only in file A, which are in both, and which are only in file B. For example, if you have file-a which is:

17 p o i u
13 a b c d
14 q w e r t 

... and file-b which is:

18 a s d f 
13 f g h i
7 z x c v 

You can use comm with process substitution in the following way:

$ comm -1 -2 <(cut -d ' ' -f 1 file-a|sort) <(cut -d ' ' -f 1 file-b|sort)
13

The -1 parameter suppresses lines that are only in the first file, and -2 suppresses those that are only in the second.

美男兮 2024-12-21 07:08:09

对文件进行排序,然后您就可以使用

$ join sortedfile1.txt sortedfile2.txt

,并且您将获得连接的公共 ID 行。

Sort the files then you can use

$ join sortedfile1.txt sortedfile2.txt

and you will get the common IDs line joined.

尝蛊 2024-12-21 07:08:09

cut -f1 文件 1 文件 2 |排序| uniq-d

cut -f1 file1 file2 | sort | uniq -d

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文