gsub(/[.]/, " ", loc); nf = split(loc, locf); if (nf == 2) { fnum = locf[1]; if (match(locf[2], /^[A-Z]/)) { unit = substr(locf[2],1,1); line = substr(locf[2],2); } else { unit = ""; line = locf[2]; } } else if (nf == 3) { fnum = locf[1]; unit = locf[2]; line = locf[3]; } else { error("bad location format"); } First, the "bad" patterns: foreach sam ( ${samples} ) echo " "; echo "${sam}" cat ${sam}-${maxlen}-srt.soc \ | gawk '($9 ~ /[?*]/){print;}' \ > ${sam}-${maxlen}-bad.soc end