linux – 如何按顺序打印包含某些字符串的行?
发布时间:2020-12-13 23:52:39 所属栏目:Linux 来源:网络整理
导读:我有两个文件 文件indv COPDGene_P51515COPDGene_V67803COPDGene_Z75868COPDGene_U48329COPDGene_R08908COPDGene_E34944 档案数据 COPDGene_Z75868 1 COPDGene_A12318 3 COPDGene_R08908 5 COPDGene_P51515 8 COPDGene_U48329 2 COPDGene_V67803 8 COPDGene_
我有两个文件
文件indv COPDGene_P51515 COPDGene_V67803 COPDGene_Z75868 COPDGene_U48329 COPDGene_R08908 COPDGene_E34944 档案数据 COPDGene_Z75868 1 COPDGene_A12318 3 COPDGene_R08908 5 COPDGene_P51515 8 COPDGene_U48329 2 COPDGene_V67803 8 COPDGene_E34944 2 COPDGene_D29835 9 我想按照indv的顺序打印包含indv中字符串的行,如下所示 COPDGene_P51515 8 COPDGene_V67803 8 COPDGene_Z75868 1 COPDGene_U48329 2 COPDGene_R08908 5 COPDGene_E34944 2 我试着用 awk 'NR==FNR{a[$1]++;next} ($1 in a)' indv data 但是我得到了 COPDGene_Z75868 1 COPDGene_R08908 5 COPDGene_P51515 8 COPDGene_U48329 2 COPDGene_V67803 8 COPDGene_E34944 2 这不是indv的顺序. 解决方法$awk 'FNR==NR{a[$1]=$0;next;} {print a[$1]}' data indv COPDGene_P51515 8 COPDGene_V67803 8 COPDGene_Z75868 1 COPDGene_U48329 2 COPDGene_R08908 5 COPDGene_E34944 2 这个怎么运作 > FNR == NR {a [$1] = $0;下一个;} 对于第一个文件读取数据,在第一个字段的索引下保存关联数组a中的每一行,$1.跳过其余命令,然后从下一行开始. 如果我们到这里,我们正在处理第二个文件,indv.对于此文件,从与此行上第一个字段对应的数据中打印每一行.这样,每行的内容由数据控制,但打印顺序由indv控制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |