Skip to content

Instantly share code, notes, and snippets.

@rightfold

rightfold/.awk Secret

Created October 18, 2015 20:06
Show Gist options
  • Save rightfold/02f80d6ea6d4899d9ce8 to your computer and use it in GitHub Desktop.
Save rightfold/02f80d6ea6d4899d9ce8 to your computer and use it in GitHub Desktop.
func ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
func rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
func trim(s) { return rtrim(ltrim(s)) }
BEGIN {
factors["s"] = 1
factors["m"] = 60
factors["h"] = 3600
factors["d"] = 86400
factors["y"] = 31536000
for (factor in factors) {
factors["Y" factor] = 1000000000000000000000000 * factors[factor]
factors["Z" factor] = 1000000000000000000000 * factors[factor]
factors["E" factor] = 1000000000000000000 * factors[factor]
factors["P" factor] = 1000000000000000 * factors[factor]
factors["T" factor] = 1000000000000 * factors[factor]
factors["G" factor] = 1000000000 * factors[factor]
factors["M" factor] = 1000000 * factors[factor]
factors["k" factor] = 1000 * factors[factor]
factors["m" factor] = 0.001 * factors[factor]
factors["u" factor] = 0.000001 * factors[factor]
factors["n" factor] = 0.000000001 * factors[factor]
factors["p" factor] = 0.000000000001 * factors[factor]
factors["a" factor] = 0.000000000000000001 * factors[factor]
factors["z" factor] = 0.000000000000000000001 * factors[factor]
factors["y" factor] = 0.000000000000000000000001 * factors[factor]
}
}
NR == 1 { next }
{
isotope = trim(substr($0, 12, 5))
halflife = trim(substr($0, 62, 7))
halflife_unit = trim(substr($0, 70, 2))
if (halflife ~ /^[0-9]+(\.[0-9]+)?$/) {
printf "%s\t%f\n", isotope, factors[halflife_unit] * halflife
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment