diff options
Diffstat (limited to 'scripts/analyze_path.awk')
-rw-r--r-- | scripts/analyze_path.awk | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/scripts/analyze_path.awk b/scripts/analyze_path.awk new file mode 100644 index 0000000..38e3f2a --- /dev/null +++ b/scripts/analyze_path.awk @@ -0,0 +1,49 @@ +#!/usr/bin/awk -f +# extract `obs_id' and `source name' from path +# +# LIweitiaNux <liweitianux@gmail.com> +# 2013/02/04 +# +# input: +# path that include `oi' and `source name' +# e.g.: +# +# output: +# + +# main part +{ + if (NF==1) { + ## oi & name + input=($1 "/") + if (input ~ /_oi/) { + ## PATTERN: .../$name_oi$oi/... + idx_oi = match(input, /oi[0-9]+/) + 2; # `2' skip the `oi' + len_oi = RLENGTH - 2; + oi = substr(input, idx_oi, len_oi); + idx_name = match(input, /\/[a-zA-Z0-9.+-]+_oi/) + 1; + len_name = RLENGTH - 4; + name = substr(input, idx_name, len_name); + } + else { + ## PATTERN: .../$name/$oi/... + idx_oi = match(input, /\/[0-9]+\//) + 1; + len_oi = RLENGTH - 2; + oi = substr(input, idx_oi, len_oi); + idx_name1 = match(input, /\/[a-zA-Z0-9_.+-]+\/[0-9]+\//); + len_name1 = RLENGTH; + name1 = substr(input, idx_name1, len_name1); + idx_name = match(name1, /\/[a-zA-Z0-9_.+-]+\//) + 1; + len_name = RLENGTH - 2; + name = substr(name1, idx_name, len_name); + } + ## output + printf("input: %s\n", input) + printf("oi: %s\nname: %s\n", oi, name) + } + else { + printf("*** WARNING: invalid input: %s\n", $0) + } +} +# END + |