INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Log In

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips Forums!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

Posting Guidelines

Promoting, selling, recruiting, coursework and thesis posting is forbidden.

Jobs

Why not take awk variable for?

Why not take awk variable for?

(OP)
for I in MAY JUN JUL AUG; do echo $I; cat final_subscriber_mOP.txt | grep -v -e rows -e --- -e s|awk '$1 ~ /$I/ {print $1, $2}' | sort -n | uniq -c; done

Thank you for support.

RE: Why not take awk variable for?

Hi

This is not really an Awk question as Awk can do nothing to access shell variables.

The usual solution is to have the shell expand that variable before the code is passed to Awk. But parameter expansion is not performed on single quoted ( ' ) strings :

CODE --> line

master # I='Something'

master # echo '$1 ~ /$I/ {print $1, $2}'
$1 ~ /$I/ {print $1, $2} 

The solution may be to enclose the string in double quotes ( " ), but then the shell will attempt to expand everything looking meaningful for it :

CODE --> line

master # echo "$1 ~ /$I/ {print $1, $2}"
 ~ /Something/ {print , } 

So to make quoting work as you wish, you have to either :

CODE

# interrupt the single quotes around the shell variable and quote it with double quotes
awk '$1 ~ /'"$I"'/ {print $1, $2}'

# escape everything you not want the shell to expand
awk "\$1 ~ /$I/ {print \$1, \$2}" 

Beside those the are 2 more ways the shell can make a value accessible to Awk :

CODE

# define an Awk variable from outside, using the -v ( or --assign ) option
awk -vJ="$I" '$1 ~ J {print $1, $2}'

# export the variable ( using the export shell builtin ) so Awk can access it as environment variable
awk '$1 ~ ENVIRON["I"] {print $1, $2}' 

Feherke.
feherke.ga

RE: Why not take awk variable for?

(OP)
Hi Feherke

Thanks you so much. I think that was it. Let me check your solution and let you know.

Red Flag This Post

Please let us know here why this post is inappropriate. Reasons such as off-topic, duplicates, flames, illegal, vulgar, or students posting their homework.

Red Flag Submitted

Thank you for helping keep Tek-Tips Forums free from inappropriate posts.
The Tek-Tips staff will check this out and take appropriate action.

Reply To This Thread

Posting in the Tek-Tips forums is a member-only feature.

Click Here to join Tek-Tips and talk with other members!

Resources

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close