Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过在bash中保留第一行来删除与特定模式匹配的所有行_Bash_Awk_Sed_Bioinformatics - Fatal编程技术网

通过在bash中保留第一行来删除与特定模式匹配的所有行

通过在bash中保留第一行来删除与特定模式匹配的所有行,bash,awk,sed,bioinformatics,Bash,Awk,Sed,Bioinformatics,我想通过删除除第一行匹配模式“FAT1”之外的所有行来编辑gtf文件,并修改坐标(第3列和第4列) 预期产量 #!genome-build GRCh38.p7 #!genome-version GRCh38 #!genome-date 2013-12 #!genome-build-accession NCBI:GCA_000001405.22 #!genebuild-last-updated 2016-06 1 havana exon 137682 137965 gene_

我想通过删除除第一行匹配模式“FAT1”之外的所有行来编辑gtf文件,并修改坐标(第3列和第4列)

预期产量

#!genome-build GRCh38.p7
#!genome-version GRCh38
#!genome-date 2013-12
#!genome-build-accession NCBI:GCA_000001405.22
#!genebuild-last-updated 2016-06
1       havana  exon    137682  137965 gene_id "ENSG00000239906"; gene_version "1"; gene_name "RP11-34P13.16"; gene_source "havana";
1       havana  gene    139790  140339  gene_id "ENSG00000239906"; gene_version "1"; gene_name "RP11-34P13.14"; gene_source "havana"; 
1       havana  exon    147653  148000 gene_id "ENSG00000269981"; gene_version "1"; gene_name "FAT1"; gene_source "havana";

我试过这样的东西

    # Keep only the unique entry for FAT1 gene. 
    awk '/"ENSG00000269981"/&&c++ {next} 1' ref.gtf > ref_edit.gtf 

   #then manually edit the coordinates in vim editor

但我相信会有更合理的解决办法。

请您尝试以下方法

awk -v new_fourth_col="147653" -v new_fifth_col="148000" '
BEGIN{
  OFS="\t"
}
/gene_name "FAT1"/{
  if(++count==1){
    $4=new_fourth_col
    $5=new_fifth_col
    print
  }
  next
}
{
  $1=$1
  print
}
' Input_file

我还将您的输出设置为制表符分隔。

修改第3列和第4列的逻辑是什么?另外,请在您的帖子中添加您的努力,然后让我们知道。@RanvinderSing13编辑第3列和第4列,以创建具有新坐标的自定义gtf文件。当然,请添加您为解决您自己的问题所做的努力,然后让我们知道。我的答案已准备好,但等待您的帖子更新,由于我们鼓励所有用户添加他们的试用代码,所以要求您这样做。@RavinderSingh13,我尝试了类似的方法。a) 仅保留FAT1基因的唯一条目。awk'/“ENSG0000269981”/&&c++{next}1'ref.gtf>ref_edit.gtf b)然后手动编辑vim中的坐标editor@RavinderSingh..out好奇的是,如果FAT1基因被发现超过2次,我需要打印前两行怎么办?@Kryo,是的,我们也可以这样做。我将读取输入_文件2次,在第一次读取时,我将创建一个包含FAT1计数的数组,然后在第二次读取输入_文件时相应地执行操作。我想在单读它会更复杂,你可以给它一个机会,让我知道如果有任何疑问请。
awk -v new_fourth_col="147653" -v new_fifth_col="148000" '
BEGIN{
  OFS="\t"
}
/gene_name "FAT1"/{
  if(++count==1){
    $4=new_fourth_col
    $5=new_fifth_col
    print
  }
  next
}
{
  $1=$1
  print
}
' Input_file