linux - awk usage in a variable -


actlist file contains around 15 records. want print/store each row in variable perform further action. script runs echo $j displays blank value. issue? script:

#/usr/bin/sh  aclist=/root/john/actlist  rowcount=`wc -l $aclist | awk -f " " '{print $1}'`  ((i=1; i<=rowcount; i++));  j=`awk 'fnr == $i{print}' $aclist`  echo $j done 

file: actlist

cat > actlist  5663233332 2223 2 5656556655 5545 5 4454222121 5555 5 . . . 

the issue happens related quotes , way shell interpolates variables.

more specifically, when write

j=`awk "fnr == $i{print}" $aclist` 

the awk code must enclosed double quotes. necessary if want shell able substitute $i actual value stored in i variable.

on other hand, if write

j=`awk 'fnr == $i{print}' $aclist` 

i.e. single quotes, $i interpreted literal string.

hence fixed code read:

#/usr/bin/sh  aclist=/root/john/actlist  rowcount=`wc -l $aclist | awk -f " " '{print $1}'`  ((i=1; i<=rowcount; i++));      j=`awk "fnr == $i{print}" $aclist`      echo $j done 

remember: shell variable interpolation before calling other commands.

having said that, there places, in supplied code, improvements devised. that's story.


Comments

Popular posts from this blog

php - Submit Form Data without Reloading page -

linux - Rails running on virtual machine in Windows -

php - $params->set Array between square bracket -