【问题标题】:bash--instersection of two files based on a specific columns?bash - 基于特定列的两个文件的交集?
【发布时间】:2011-06-20 06:46:23
【问题描述】:

我想执行以下操作,如果有人可以帮助我完成此操作,我将不胜感激:

我有 2 个制表符分隔文件,分别命名为 File1.txt 和 File2.txt(如下所示)。 如果在 File2.txt 的第 3 列(整数)中找到 File1.txt 中的第 2 列(整数),则 我想制作 new_File1.txt 和 new_File2.txt 并继续追加 行。

文件1.txt:

1   80  xyc
1   304 xyv
1   813653  xyb
1   813661  xyn
1   954653  xym

文件2.txt:

abvb    1   178
aaa 1   304 
ttt 1   353
ggg 1   98971
ghj 1   813653

例如,我的 new_File1.txt 将如下所示:

new_File1.txt:

1   304 xyv
1   813653  xyb

new_File2.txt:

aaa     1   304
ghj     1   813653

感谢大家的帮助! 我用过:

join -1 2 -2 3 -t '\t' file1.txt file2.txt

但它给了我以下输出:

\1      80      xyc\abvb        1       178
\1      80      xyc\aaa 1       304
\1      80      xyc\ttt 1       353
\1      80      xyc\ggg 1       98971
\1      80      xyc\ghj 1       813653
\1      304     xyv\abvb        1       178
\1      304     xyv\aaa 1       304
\1      304     xyv\ttt 1       353
\1      304     xyv\ggg 1       98971
\1      304     xyv\ghj 1       813653
\1      813653  xyb\abvb        1       178
\1      813653  xyb\aaa 1       304
\1      813653  xyb\ttt 1       353
\1      813653  xyb\ggg 1       98971
\1      813653  xyb\ghj 1       813653
\1      813661  xyn\abvb        1       178
\1      813661  xyn\aaa 1       304
\1      813661  xyn\ttt 1       353
\1      813661  xyn\ggg 1       98971
\1      813661  xyn\ghj 1       813653
\1      954653  xym\abvb        1       178
\1      954653  xym\aaa 1       304
\1      954653  xym\ttt 1       353
\1      954653  xym\ggg 1       98971
\1      954653  xym\ghj 1       813653

【问题讨论】:

    标签: bash file intersection


    【解决方案1】:

    您正在寻找join(1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多