regex - AWK: Using a variable as part of a regular expression -


this question has answer here:

i have text file similar 1 containing username, description , 2 time range values german date format:

user###@###description###@###1. august - 8. august 2016###@###1. september - 7. september 2016 

each field gets separated using ###@### delimiter. check if field (e.g. $3) contains 2 identical month names. if there 2 month names in specified field, first month name should removed, output of awk is:

user###@###description###@###1. - 8. august 2016###@###1. - 7. september 2016 

then got idea create for-loop bash script (with awk commands), increments i in order read out month name predefined variable. here can more detailed

script.sh:

m1=january; m2=february; m3=march; m4=april; m5=may; m6=june; m7=july; m8=august; m9=september; m10=october; m11=november; m12=december       awk -f '###@###' '     {for (i=1;i++;i<=12){      count=0;     $3 ~ 'm'i {count++};     if (count == 2){gsub(mi,"" ,$3)}     }}' info.txt > info.tmp  

unfortunately unable search varname mi (like m1, m2, m3.. etc.)

what have change in order search variable pattern actions?

you can put predefined names in awk script. this, maybe. (quick hack - log off day ;) )

awk -f ... ' begin { m[1]="january"; m[2]="february"; ... }              {for(i=1...              if ( $3 ~ m[i] ) { count++ }              ...}' 

edit: benefit of future readers, here's text op's shorttext.com link below:

awk -f '###@###' ' begin{m1="januar"; m2="february"; m3="march"; m4=april; m5=may; m6=june; m7=july; m8=august; m9=september; m10=october; m11=november; m12=december} {for (i in m){ count=0; $3 ~ (m[i] ".*" m[i]) {print ++count}; if (count == 1){sub(m[i],"" ,$3)} }}' info.txt > info.tmp


Comments

Popular posts from this blog

many to many - Django Rest Framework ManyToMany filter multiple values -

java - Jasper subreport showing only one entry from the JSON data source when embedded in the Title band -

Java Entity Manager - JSON reader was expecting a value but found 'db' -