如何根据第二个文件中的信息在文件中保留一部分行?

扎拉

我有一个数据文件,看起来像:

file1:

c1.212 3.4 90
c1.011 4.4 33
c2.09432 7.7 76
c3.0911 8.3 83
c3.1121 4.3 23
c3.2223 2.2 22
c3.1211 2.2 12
c4.1211001 1.2 11
c4.1111222 1.2 10
c4.0000011 99 76
c5.123 11 01
c5.113 11 01
...

第二个文件如下所示:

c1.212
c3.2223
c3.0911
c5.113
...

正如您在文件1中根据第一列的信息所看到的,有5个组(c1,c2,c3,c4和c5),每个组具有不同数量的子集(例如c1有2个子集,而c2有一个子集) ,但在第二个文件中有3个组(c1,c3和c5)。我想要的是,如果在file2中观察到任何组,则保留其所有子集的文件1,而在文件2(c1和c4)中未观察到的那些组,则将其所有子集从file1中删除。因此输出应如下所示:

output:
    c1.212 3.4 90
    c1.011 4.4 33
    c3.0911 8.3 83
    c3.1121 4.3 23
    c3.2223 2.2 22
    c3.1211 2.2 12
    c5.123 11 01
    c5.113 11 01
    ...

任何建议将不胜感激。(实际文件有超过45,000行)

钢铁司机

有很好的awk主食

awk -F. 'NR==FNR {a[$1]++; next} $1 in a' file2 file1
c1.212 3.4 90
c1.011 4.4 33
c3.0911 8.3 83
c3.1121 4.3 23
c3.2223 2.2 22
c3.1211 2.2 12
c5.123 11 01
c5.113 11 01

或者,假设这一组标识符(c1c2等)不其他地方出现在文件中,你可以使用cut提取的标识符,然后grep在你的第一个文件,例如它们匹配

$ cut -d. -f1 file2 | grep -Fwf- file1
c1.212 3.4 90
c1.011 4.4 33
c3.0911 8.3 83
c3.1121 4.3 23
c3.2223 2.2 22
c3.1211 2.2 12
c5.123 11 01
c5.113 11 01

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将文件的一部分读入 perl 数组并查询第二个文件(最佳实践)

如何根据第二个文件中的信息删除文件中的某些列?

正则表达式中第二个捕获组的一部分

如何将一个数组项的一部分与第二个数组中的一部分数组项进行比较?

如何基于第二个文件中的信息将信息分组在第一个文件中?

如何创建第一个计算的答案是第二个计算等式的一部分的循环

如何根据第二个文件中的相应值在一个文件中打印一行?

fdupes如何保留第二个文件

根据第二个文件中的更新更新一个excel文件

mod_vhost_alias和VirtualDocumentRoot:如何添加倒数第二个和最后一部分?

仅在第一个文件中保留其列号与第二个文件中的列号匹配的那些列

如何根据从第二个文件获取的值范围来排除文件中的行

在python中,我可以将文件名的一部分与两个文件夹(名称)之间的特殊字符匹配,然后将找到的匹配项复制到第二个文件夹中吗?

如果第一个列表包含另一个列表的一部分,则与第二个列表相交

如何将第二个外键添加到EF属性中,该属性已经是复合外键的一部分

Python re.split()将分隔符的部分保留为第一个字符串的一部分,而其他保留为第二个字符串的一部分,依此类推

当第二个div的溢出被隐藏时,另一个div上的div的一部分

保留第一个文件中与第二个文件不匹配的行

仅获取Excel文件中的一部分行

根据第二个文件中的特定值选择一个文件中的行

根据第二个文件中的索引替换一个文件中的行

将字符串1的一部分与第二个字符串进行比较

Ionic 2-Slider-显示第二个幻灯片项目的一部分

根据第二个文件中的模式匹配映射第一个文件的字段

在MainActivity中重新单击按钮以启动第二个活动后,如何在第二个活动中保留价值?

如何在Python中复制二进制文件的一部分?

如何更改基于第二个文件的文件

如何基于文件名的第一部分和第二部分创建文件夹并将文件移动到该文件夹中?

如何从PyQt5中的第二个文件访问第一个文件方法?