linux - 在 Linux 中比较文本文件中两列的特定部分
问题描述
我有一个文本文件,其中有几列由制表符分隔,如下所示:
1 ATGCCCAGA AS:i:10 XS:i:10
2 ATGCTTGA AS:i:10 XS:i:5
3 ATGGGGGA AS:i:10 XS:i:1
4 ATCCCCGA AS:i:20 XS:i:20
我现在想比较最后两列 AS:i:(n1) 和 XS:i:(n2) 以仅获取 n1 与 n2 不同的行。所以,我想要的输出是:
2 ATGCTTGA AS:i:10 XS:i:5
3 ATGGGGGA AS:i:10 XS:i:1
你能建议我一些比较 n1 和 n2 并打印输出的方法吗?提前致谢。
解决方案
正如肖恩所说,您可以在 awk ... 或 perl ... 或 sed 中执行此操作。
一个 AWK 示例可能是
awk '{split($3,a,":");split($4,b,":");if(a[3]!=b[3]) print $0}' infile.txt
如果您熟悉 awk,这应该是不言自明的
推荐阅读
- c - 为什么 A[2][3] 是声明 int *A [10] 的有效左值;
- r - 如何直接从 R 脚本生成 html 报告?
- python - 如何处理数据集中的匿名变量以获得更好的预测
- c# - [C#]对列表框中的项目进行排序
- python - 根据另一个库版本安装特定的python库版本
- ruby - bundler:加载失败命令:fastlane
- c# - 基于click_event c#编辑listview项目
- clockify - Clockify- CreateProjectAsync 与成员资格
- java - 基于 HTML 页面操作重定向到其他 servlet
- python - Python - 从并行的多个大文件中读取并单独生成它们