下面的awk
用于file
的两个可能结果,即tab delimeted
。选项1是file
仅包含一个标题行,下面没有任何内容。选项2为file
将包含相同的标题行,但标题行下面。 awk
读取file
,如果它是选项1或仅标头,则打印1 0 0 0 0
(制表符分隔)。如果file
是选项2或标题下有行的标题,则不执行任何操作。目录中的file
可能不止一个,但格式始终相同。
文件(选项1)
R_Index Chr Start End Gene
文件(选项2)
R_Index Chr Start End Gene
1 1 100 300 xxx
2 2 200 250 yyy
如果选项1为所需输出
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
答案 0 :(得分:2)
这应该做:
$ 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文件更新文件。