Using variable in awk command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using variable in awk command
# 1  
Old 03-27-2013
Using variable in awk command

Have a small doubt .
While using an iterator , i need to take the fields as seen as below .
But the Iterator is not been displayed . Can you please help with this .



Code:
Code:
ITERATOR=0COUNT=`cat test.txt`echo "$COUNT" while [ $ITERATOR -lt $COUNT ]do echo $ITERATOR echo "$COUNT" awk 'NR=="$ITERATOR"{print;exit}' EMAIL_REPORT.CSV >temp_mail.txt TO=`cat temp_mail.txt` ITERATOR=`expr $ITERATOR + 1`done

By using set -x , i checked the data been sent .



Code:
Code:
+ awk NR=="$ITERATOR"{print;exit} EMAIL_REPORT.CSV

Can you please help with this .

Image
# 2  
Old 03-27-2013
After reformatting your script

Code:
ITERATOR=0
COUNT=`cat test.txt`
echo "$COUNT"

while [ $ITERATOR -lt $COUNT ]
do
    echo $ITERATOR
    echo "$COUNT"
    awk 'NR=="$ITERATOR" {print;exit}' EMAIL_REPORT.CSV >temp_mail.txt
    TO=`cat temp_mail.txt`
    ITERATOR=`expr $ITERATOR + 1`
done

you can see, that your awk script is enclosed in single quotes. They prevent variable expansion, so awk sees the literal text $ITERATOR. Also, since $ITERATOR is supposed to be a number, you don't need the double quotes.

Code:
awk 'NR=='$ITERATOR' {print;exit}' EMAIL_REPORT.CSV >temp_mail.txt

# 3  
Old 03-27-2013
As did the other (faster) poster, I tried reformatting the script to make it easier to read, and to make the logic work (as it seemed to me). You can correct if I mixed something up.
Code:
ITERATOR=1
COUNT=`tail -1 test.txt`
echo COUNT = $COUNT
while [ $ITERATOR -le $COUNT ]; do
  echo ITERATOR = $ITERATOR
  awk -v i=$ITERATOR 'NR == i {print; exit}' EMAIL_REPORT.CSV > temp_mail.txt
  # sed -n "$ITERATOR { p; q }" EMAIL_REPORT.CSV > temp_mail.txt
  TO=`cat temp_mail.txt`
  ITERATOR=`expr $ITERATOR + 1`
done

As the other poster stated, the problem is because the awk script is enclosed in 'single quotes'. So awk just sees the literal $ITERATOR. In other words, the shell variable is not expanded.

If your version of awk supports the -v option, I've suggested a nice alternative way to make it work. I couldn't get the other submitted script to work, but I'm probably messing it up. I hope at least one of them works for you! Smilie

Instead of using awk to print the one line, you could also use the simpler sed command I added.
This User Gave Thanks to hanson44 For This Post:
# 4  
Old 03-27-2013
Thanks a lot worked perfectly ...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Variable in awk command

Hello All, I am trying to run a script to extract data from the file. The format of the file is as below: filename: sample.log 12345| ABCD 23456| GKHY 33454| ABCD 98765| TTRRI want to run a command in AWK as show below extract.sh #!/bin/bash echo... (2 Replies)
Discussion started by: chetanojha
2 Replies

2. Shell Programming and Scripting

Storing awk command in a variable

I'm working on a script in which gives certain details in its output depending on user-specified options. So, what I'd like to do is something like: if then awkcmd='some_awk_command' else awkcmd='some_other_awk_command' fi Then, later in the script, we'd do something like: ... (5 Replies)
Discussion started by: treesloth
5 Replies

3. UNIX for Dummies Questions & Answers

Using a variable in the awk command

Hi Guys, Can anyone of you please tell me how to use a variable inside a awk command. For ex - if am printing the third column with respect to a pattern with delimiter ~ awk -F~ '$3=="pattern"' <file name> - This works, Now here I have a set of patterns in a file and I want to put it in... (1 Reply)
Discussion started by: abhisheksunkari
1 Replies

4. Shell Programming and Scripting

Variable in AWK command help

here is what i have so far delim=`cat $HOME/tmp/interchange_hold | head -1 | cut -b4` cat $HOME/tmp/rawfile_hold | ( while read line se_check=`echo $line | awk -F: -v awkvar="$delim" '{ print $1}'` delim will hold the 4th char of a file. Lets say that char is a * the line im... (2 Replies)
Discussion started by: blesjt02
2 Replies

5. Shell Programming and Scripting

Variable as input to awk command

Hi Gurus, I need a suggestion, please help. I have a input file as below : abc.txt : * xxxx: 00000 xxxxx: 00000 xxxx: RANDOM xxx: RANDOM **************************xxxxxxx*** * abc ****************************** abc: abc: ... (3 Replies)
Discussion started by: arunshankar.c
3 Replies

6. Shell Programming and Scripting

use shell variable in awk command

Trying to do something like this ls -lrt | awk '$9=="test5"' -rw-r--r-- 1 lrmq db2iadm1 381 Sep 20 21:56 test5 But now, I need to give a variable in place of test5. For example let's define x as test5 x=test5 ls -lrt | awk '$9=="$x"' This doesn't seem to be working. It doesn't take the... (4 Replies)
Discussion started by: blazer789
4 Replies

7. Shell Programming and Scripting

Problem with Variable and AWK command

Okay, so I am trying to use a count variable to reference the column of output sent from an echo statement. So I am trying to do this #!/bin/bash CURRENT=$PWD VAR=3 CHANGE=`echo $CURRENT | awk -F "/" '{ print \$$VAR }'` This instead of giving me the third instance after the "/" gives... (4 Replies)
Discussion started by: mkjp2011
4 Replies

8. Shell Programming and Scripting

How to use same variable value inside as well as outside of the awk command?

Hi Jim, The following script is in working state. But i m having one more problem with awk cmd. Could you tell me how to use any variable inside awk or how to take any variable value outside awk. My problem is i want to maintain one property file in which i am declaring variable value into that... (12 Replies)
Discussion started by: Ganesh Khandare
12 Replies

9. Shell Programming and Scripting

Execution of awk command in a variable

Hi All, I have a awk command that is stored in a variable. the value of the variable cmd is: (mean output of echo $cmd is: ) awk -F";" '{print $1}' Now I want to execute this command. How can I do that???? Quick Reply will be appreciated. Regards, Amit (2 Replies)
Discussion started by: patelamit009
2 Replies

10. Shell Programming and Scripting

passing variable values to awk command

Hi, I have a situation where I have to specify a different value to an awk command, I beleive i have the gist of this done, however I am not able to get this correct. Here is what I have so far echo $id 065859555 This value occurs in a "pipe" delimited file in postition 8. Hence I would... (1 Reply)
Discussion started by: jerardfjay
1 Replies
Login or Register to Ask a Question