shell 抽取文件中指定的行(多行)

两个文件,a文件为指定的样本,b文件为目标抽取的文本。
如图:
a:
clipboard.png

b,第一列为样本编号:

clipboard.png
以前习惯拿python抽样,但效率不快。所以渴求大神教一下,如何用shell或者perl抽样?感觉效率会快很多

阅读 5.8k
3 个回答

用sed命令

cat a | paste -sd '|' | sed -r 's/(.+)/\(\1\)/' | grep -E -f - b

随手编写,未测试

my $fileA=shift;
my $fileB=shift;
open A,"$fileA";
my %ha;
while(<A>){
    chomp;
    $ha{$_}="";
}

open B,"$fileB";
while(<B>){
    chomp;
    my $tag=(split /,/,$_)[0];
    if(exists $ha{$tag}){
        print "$_\n";
    }
}
close A;
close B;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题