, пожалуйста, попробуйте выполнить следующее, если вы в порядке с 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
. Он должен проверить все существующие значения AF_female=digits
в строке и напечатает NA
в случае, если он найдет NULL.совпадения в строке тоже.
Вывод будет следующим:
AF_female=0.00000e+00
NA
AF_female=0.00008e+00
Объяснение: Добавление пояснения к вышеприведенной команде.
awk -F';' ' ##Starting awk program here and setting up field separator as semi-colon here.
{
val="" ##Nullifying value of variable val here.
for(i=1;i<=NF;i++){ ##using a for loop which starts from i=1 to i=NF value. Where NF is number of fields value in current line.
if($i ~ /^AF_female=[0-9]+/){ ##Checking condition if a field starts from AF_female and then digits then do following.
val=(val?val OFS $i:$i) ##Creating variable val whose value is current field value and concatenating its own value.
}
}
if(val!=""){ ##After coming out of for loop checking if variable val value is NOT NULL then do following.
print val ##Printing value of variable val here.
}
else{ ##Mentioning else of above if condition here.
print "NA" ##Printing NA here.
}
}' Input_file ##Mentioning Input_file name here.