If statement 如果行开始###或#不打印此行,但每次都必须打印第一行

If statement 如果行开始###或#不打印此行,但每次都必须打印第一行,if-statement,for-loop,printing,awk,If Statement,For Loop,Printing,Awk,我需要一些帮助,如果行以##开头,请不要打印此行的所有列,如果不是以此开头,请打印$0。但每次都必须打印第一行 我试过: awk '{for (i=0;i<=NF;i++);{if ($i == "##*") print ""; else print $0}}' 788613_v1.vcf > fedulka.tsv 我想你在找这个 $ cat file ##title foo bar #foo ##foobar $ awk 'NR==1{print; next}{if ($1~/

我需要一些帮助,如果行以##开头,请不要打印此行的所有列,如果不是以此开头,请打印$0。但每次都必须打印第一行

我试过:

awk '{for (i=0;i<=NF;i++);{if ($i == "##*") print ""; else print $0}}' 788613_v1.vcf > fedulka.tsv

我想你在找这个

$ cat file
##title
foo
bar
#foo
##foobar
$ awk 'NR==1{print; next}{if ($1~/^#/) {next;} else {print}}' file
##title
foo
bar

它跳过以
#
开头的行(第一行除外),并打印所有剩余的行。

只需打印第一行,然后检查以一行或两行开头的行。如果不发生这种情况,则条件为真,因此自动打印该行

awk 'NR==1{print; next} !/^#{1,2}/' file
见示例:

$ awk 'NR==1{print; next} !/^#{1,2}/' a
##fileformat=VCFv4.1
chr13   32890572    .   G
chr13   32890650    COSM35423   G
chr13   32893219    COSM23939   G

显示您的简化输入和预期输出,否则不清楚。抱歉,这是我的文档的错误。对于这个例子来说,打印$0是可以的,这真的很好,很简单。。非常感谢你读到这篇文章。无需使用
if/else
,因为这将单独处理。@FilipZembol奇怪,为什么要在输出中使用
#CHROM POS ID REF
?我不懂逻辑。举个例子,我把两件事合并到一件事上,我把你写的代码分开。。起初我只需要chr13等。。。然后我需要第一列和#chrom等…它工作…
paste
将以相同的顺序连接两个文件
awk 'NR==1{print; next} !/^#{1,2}/' file
$ awk 'NR==1{print; next} !/^#{1,2}/' a
##fileformat=VCFv4.1
chr13   32890572    .   G
chr13   32890650    COSM35423   G
chr13   32893219    COSM23939   G