通过在bash中保留第一行来删除与特定模式匹配的所有行
我想通过删除除第一行匹配模式“FAT1”之外的所有行来编辑gtf文件,并修改坐标(第3列和第4列) 预期产量通过在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_
#!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