If statement 如果行开始###或#不打印此行,但每次都必须打印第一行
我需要一些帮助,如果行以##开头,请不要打印此行的所有列,如果不是以此开头,请打印$0。但每次都必须打印第一行 我试过: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~/
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