如何提取模式但在bash中填充缺失值?

时间:2019-02-22 13:15:44

标签: regex bash large-data

我有一个大的制表符分隔文件(dummy.vcf),其列为';'定界变量。例如:

AF_female=0.00000e+00;non_topmed_AF_female=0.00000e+00;control_AF_female=0.00000e+00
control_AF_female=0.00000e+00;non_topmed_AF_female=0.00000e+00
AF_female=0.00008e+00;non_topmed_AF_female=0.00000e+00

我想为填充有缺失值的每一行提取“ AF_female = X”字符串,因此新文件的长度与原始文件的长度相同。例如:

AF_female=0.00000e+00  
NA  
AF_female=0.00008e+00 

我尝试过:

grep -o ';AF_female=[0-9].[0-9]*..[0-9]*' dummy.vcf

但是,当模式不匹配时,这不会添加行。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

如果您对Select concat(REFNO_PFIX,'00',REFNO_SERL) as EventName,CROSS_REF from tizone1.baseevent where concat(REFNO_PFIX,'00',REFNO_SERL) not in ( SELECT baseevent.CROSS_REF from tizone1.baseevent as ta left join tizone1.baseevent as lta on ta.EventName = lta.CROSS_REF group by master_key ); 表示满意,请尝试遵循。

awk

它应该检查一行中awk -F';' ' { val="" for(i=1;i<=NF;i++){ if($i ~ /^AF_female=[0-9]+/){ val=(val?val OFS $i:$i) } } if(val){ print val } else{ print "NA" } }' Input_file 的所有当前值,并在行中也找到NULL匹配的情况下打印AF_female=digits

输出如下。

NA

说明: 立即添加上述命令的说明。

AF_female=0.00000e+00
NA
AF_female=0.00008e+00