Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 如何按顺序打印包含某些字符串的行?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

有两个文件 文件indv COPDGene_P51515 COPDGene_V67803 COPDGene_Z75868 COPDGene_U48329 COPDGene_R08908 COPDGene_E34944 档案数据 COPDGene_Z75868 1 COPDGene_A12318 3 COPDGene_R08908 5 COPDGene_P515
我有两个文件

文件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.跳过其余命令,然后从下一行开始.
>打印[$1]

如果我们到这里,我们正在处理第二个文件,indv.对于此文件,从与此行上第一个字段对应的数据中打印每一行.这样,每行的内容由数据控制,但打印顺序由indv控制.

大佬总结

以上是大佬教程为你收集整理的linux – 如何按顺序打印包含某些字符串的行?全部内容,希望文章能够帮你解决linux – 如何按顺序打印包含某些字符串的行?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。