awk - 使用 grep 或 awk 查找 txt 和 csv 文件之间的匹配行

我有一个如下所示的 csv 文件(名为 csvfile.csv):

ENSG00000000003.15;4;0;22;21;2;10;0;0;0;0;6;0;8;2;5;15;0;0
ENSG00000000005.6;0;0;0;0;0;1;0;0;0;0;0;0;0;3;1;2;0;0
ENSG00000000419.14;18;57;76;8;12;28;35;5;73;13;50;31;21;92;39;134;31;59
ENSG00000000457.14;3;6;43;2;0;15;6;0;44;8;22;8;2;65;5;22;32;20
ENSG00000000460.17;55;3;14;28;16;7;32;15;8;19;8;18;23;12;23;25;65;94
ENSG00000000938.13;10;89;862;164;5;297;243;1;582;102;492;46;103;251;124;167;109;1108
ENSG00000000971.16;0;0;9;39;0;75;20;0;6;0;18;0;1;18;17;35;0;0
ENSG00000001036.14;87;98;69;32;47;41;35;46;153;72;48;38;32;19;56;103;186;166
ENSG00000001084.13;0;23;60;25;0;29;63;12;41;4;44;0;7;6;2;1;0;18
ENSG00000001167.15;0;0;56;0;13;22;25;0;34;13;23;4;2;87;4;7;32;28
ENSG00000001460.18;22;3;27;15;1;34;11;3;11;5;15;19;5;36;6;18;21;26
ENSG00000001461.17;74;131;159;87;181;101;144;60;347;148;98;65;60;90;96;46;335;224
ENSG00000001497.18;0;0;90;2;0;38;2;0;44;19;21;0;32;40;16;3;0;43

我正在尝试仅存储特定基因的计数(基因名称后面的数字),这些基因存储在名为 text.txt 的 txt 文件中:

ENSG00000001036.14
ENSG00000001461.17

我还想保留示例名称。所以我想要的输出是:

ENSG00000001036.14;87;98;69;32;47;41;35;46;153;72;48;38;32;19;56;103;186;166
ENSG00000001461.17;74;131;159;87;181;101;144;60;347;148;98;65;60;90;96;46;335;224

我尝试了以下方法:

awk -f, '$1==text.txt' csvfile.csv > new.csv.

但是,这并没有给我想要的输出。谁能帮忙解决这个问题?

谢谢!

最佳答案

你可以这样做:

awk -F ';' '
FNR==NR{idx[$1]; next}
FNR==1 || $1 in idx
' textile.txt csvfile.csv

打印:

;sample_a;sample_b;sample_c;sample_d
gene_1;1;1;1;1
gene_2;2;2;2;2

https://stackoverflow.com/questions/69980150/

相关文章:

node.js - 使用 Fastify : "@nestjs/platform-express"

python - 算法题: Finding the cheapest flight

javascript - 带有 Material-UI 的 SSR 上的@emotion/cache

python - 遍历列表并从头开始重新启动

r - R中多列的值计数

php - undefined variable : data , $data 未定义。拉维尔 8

python - AttributeError : module 'cv2.cv2' has no

reactjs - 如何将参数传递给从自定义 Hook 转换的函数?

asp.net-core - 安装 .NET 6 后无法创建 EF 迁移

bash - 组合两个 grep 命令来处理来自文件的输入,或者 grep 行以一个特定的子字符串开