awk,用于在图案下无任何内容时打印文本

awk,用于在图案下无任何内容时打印文本,awk,Awk,下面的awk用于文件的两种可能结果,即选项卡被删除。选项1是文件将只包含一个标题行,下面没有任何内容。选项2是文件将包含相同的标题行,但其下有行。awk读取文件,如果仅为选项1或标题,则打印1 0 0(选项卡分开)。如果文件为选项2或标题下有行,则不会执行任何操作。目录中可能有多个文件,但格式始终相同 文件(选项1) 文件(选项2) 如果选项1,则需要输出 R_Index Chr Start End Gene R_Index Chr Start End Gene 1 0 0

下面的
awk
用于
文件
的两种可能结果,即
选项卡被删除
。选项1是
文件
将只包含一个标题行,下面没有任何内容。选项2是
文件
将包含相同的标题行,但其下有行。
awk
读取
文件
,如果仅为选项1或标题,则打印
1 0 0
(选项卡分开)。如果
文件
为选项2或标题下有行,则不会执行任何操作。目录中可能有多个
文件
,但格式始终相同

文件(选项1)

文件(选项2)

如果选项1,则需要输出

R_Index Chr Start   End Gene
R_Index Chr Start   End Gene
1   0   0   0   0
awk

awk -F'\t' '{if ($0 ~ /R_Index\tChr\tStart\tEnd\tGene/) {print "1\t0\t0\t0\t0} else {next}}1' file > tmp && mv tmp file

awk -F'\t' '/R_Index\tChr\tStart\tEnd\tGene/{print "1\t0\t0\t0\t0"; next}1' file
这应该做到:

$ awk -v OFS='\t' 'NR==1 && $0!="R_Index\tChr\tStart\tEnd\tGene"{NR=0; exit 1}1; 
                   END {if(NR==1){print 1,0,0,0,0; exit 0} exit 1}' file > tmp && mv tmp file

只有在需要添加第二行时,退出状态才会成功,这将触发通过tmp文件更新文件。

是的,猫和鼠标只有一个孔;-)非常感谢:)。
$ awk -v OFS='\t' 'NR==1 && $0!="R_Index\tChr\tStart\tEnd\tGene"{NR=0; exit 1}1; 
                   END {if(NR==1){print 1,0,0,0,0; exit 0} exit 1}' file > tmp && mv tmp file