Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

awk substitute shell variables

I am struggling with awk substitution, for some reason the following code does not substitute anything, it just prints the output unaltered. Can anyone see what I am missing here? Any help would be very much appreachiated! (PS! The $DOCPATH and $SITEPATH are shell variables, they work perfectly fine in my awk setup).

awk -v docpath="$DOCPATH" -v sitepath="$SITEPATH" '{ sub( /docpath/, sitepath ) } { print }'
like image 807
Dan-Simon Myrland Avatar asked Dec 17 '13 08:12

Dan-Simon Myrland


2 Answers

Saying:

sub( /docpath/, sitepath )

causes awk to replace the pattern docpath, not the variable docpath.

You need to say:

awk -v docpath="$DOCPATH" -v sitepath="$SITEPATH" '{sub(docpath, sitepath)}1' filename
like image 128
devnull Avatar answered Oct 23 '22 18:10

devnull


Couldn't help to write this in sed:

sed 's/'"$DOCPATH"'/'"$SITEPATH"'/' input
like image 45
perreal Avatar answered Oct 23 '22 18:10

perreal