#!/usr/bin/gawk -f function version_split(version1,version_array,split_chars, i1,remainder1,matches,num1_epoch_split){ print "version1=" version1 match(version1,/([[:digit:]])*:(.*|$)/,num1_epoch_split) if (length(num1_epoch_split) > 0 ){ version_array[1]=num1_epoch_split[1] remainder1=num1_epoch_split[2] } else { version_array[1]=0 remainder1=version1 } delete num1_epoch_split split_chars[1]=":" i1=2 #match(remainder1,/^([^+\.\-~:]+)(([+\.~])([^+\.~\-:]+))*((\-)([^+\.~\-:])+)?$/,matches) #match(remainder1,/^([^+\.\-~:]+)(([+\.\-~:])(.*))?$/,matches) match(remainder1,/^([[:digit:]]+)(([+\.\-~:])(.*))?$/,matches) while (length(matches) > 0) { version_array[i1]=matches[1] print "version_array[" i1 "]=" version_array[i1] if (length(matches)>1){ split_chars[i1]=matches[3] print "split_chars[" i1 "]=" split_chars[i1] remainder1=matches[4] print "remainder1=" remainder1 #match(remainder1,/^([^+\.\-~:]+)(([+\.\-~:]+)(.*))?$/,matches) match(remainder1,/^([[:digit:]]+)(([+\.\-~:]+)(.*))?$/,matches) } else{ break } i1=i1+1 } } function v_le(ver_split, val_split, len_ver){ return v_ge(val_split,ver_split) } function v_ge(ver_split, val_split, len_ver){ print "v_ge" if (length(ver_split)": case "gt": if (v_gt(ver_split,val_split) == 0 ){ return 0 } break case "<=": case "le": if (v_le(ver_split,val_split) == 0 ){ return 0 } break case ">=": case "ge": if (v_ge(ver_split,val_split) == 0 ){ return 0 } break case "==": case "e": if (v_e(ver_split,val_split) == 0 ){ return 0 } break } #https://unix.stackexchange.com/questions/147957/delete-an-array-in-awk delete val_split delete val_split_chars } print "returning result=1" return 1 } BEGIN{FS="|" awk_cmp_ary_op[1]="lt" awk_cmp_ary_val[1]="9.10" #"2.1.12" } { #print "wtf" if( $2 == "base-files") { if ( arry_cmp($3,awk_cmp_ary_op,awk_cmp_ary_val) == 1 ){ print "printing result 1" print } } else{ match($2,/^(.*[^[:digit:]])([[:digit:]]*$|$)/,pkg_split) if ( pkg_split[1] == "base-files" ) { if ( arry_cmp($3,awk_cmp_ary_op,awk_cmp_ary_val) == 1 ){ print "printing result 2" print } } } delete pkg_split }