Assign o/p of awk to a variable


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Assign o/p of awk to a variable
# 1  
Assign o/p of awk to a variable

Smilie Hi UNIX gurus,

I am facing a typical problem while assigining while assigining output of awk to a variable.

I have a fixed length file say myinputfile.txt

When I allow the value/output of an awk to be redirected to a file, it works fine. i.e.
awk "/^.{232}$acctNum/ { printf(\"%s;Y;Account#\n\",substr(\$0,241,1)) ; exit} " myinputfile.txt >> mylogfile.txt

However, when I try to assign the the value of same to a variable, and then echo the variable, it displays blank.i.e.
myvariable=`awk "/^.{232}$acctNum/ { printf(\"%s;Y;Account#\n\",substr(\$0,241,1)) ; exit} " myinputfile.txt`

Can somebody please help. Smilie
# 2  
Is this $acctNum a variable or pattern?
# 3  
It is a variable.
# 4  
Are you sure that you are getting output from awk command?
can you show your input file?
# 5  
Only awk is working fine. However, while assigning the same to variable, it is not working.

My Sample Inputfile is as shown below:

MyAdd1 MyAdd2 MyAdd3 MyAdd4 MyAdd5 Sachin Tendulkar 222 222-2222 11111111111111A0000111122223333XYX
YourAdd1 YourAdd2 YourAdd3 YourAdd4 YourAdd5 Rahul Dravid 111 121-5555 22222222222222B0123456789123456XYX

(In above example, spaces are getting truncated in this forum)
Basically, position 233-240 denotes account number. Also, by substring, I am trying to extract 241 character.
# 6  
Add another backslash before $0
Code:
myvariable=`awk "/^.{232}$acctNum/ { printf(\"%s;Y;Account#\n\",substr(\\$0,241,1)) ; exit} " myinputfile.txt`

# 7  
Bug Thank You

Hey Thank you anbu Smilie

But I have two question? Smilie
Can you please clearify them.

1. I thought only single slash is required for escaping, then whats the meaning of double slash.

2. Also why doesnt the following one work:
myvariable=`awk '/^.{232}$acctNum/ { printf("%s;Y;Account",substr($0,241,1)) ; exit} ' myinputfile.txt`
In this case we dont even need escaping. Smilie
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #116
Difficulty: Easy
Linux distributions are the most famous and healthiest example of the Unix derivatives; but macOS is currently the largest installed Unix user base (2019).
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to assign awk values to shell variable?

Hi Gurus, I have a script which assign awk output to shell variable. current it uses two awk command to assign value to two variables. I want to use one command to assign two values to two variables. I tried the code, but it does't work. kindly provide your suggestion. current code... (2 Replies)
Discussion started by: green_k
2 Replies

2. UNIX for Beginners Questions & Answers

How to assign a value to a variable in awk scripting?

Hi, I am trying to assign a value using below command and it is assigning the command to the variable not the output of the command? out_value="echo $0 | cut -c 9-11"; How can i assign the output to the variable instead of whole command? This is inside my awk script (7 Replies)
Discussion started by: bhagya123
7 Replies

3. UNIX for Beginners Questions & Answers

How can I assign awk's variable to shell script's variable?

I have the following script, and I want to assign the output ($10 and $5) from awk to N and L: grdinfo data.grd | awk '{print $10,$5}'| read N L output from gridinfo data.grd is: data.grd 50 100 41 82 -2796 6944 0.016 0.016 3001 2461. where N and L is suppose to be 3001 and 100. I use... (8 Replies)
Discussion started by: geomarine
8 Replies

4. Shell Programming and Scripting

Assign a variable with awk

I launch 'netstat -a', if string 'ESTABLISHED' found, then VAR=1 #!/bin/bash VAR=0; netstat -a | awk '$6 ~ /ESTABLISHED/ {VAR=1}' I cannot find the right syntax. thanx guys! (3 Replies)
Discussion started by: arpagon
3 Replies

5. Shell Programming and Scripting

help on awk---- need to assign the output of awk to a variable

hi i want to find the size of a folder and assign it to a variable and then compare if it is greater than 1 gb. i am doin this script, but it is throwing error.... #!/bin/ksh cd . | du -s | size = awk '{print $1}' if size >= 112000 then echo size high fi ERROR : (4 Replies)
Discussion started by: Nithz
4 Replies

6. Shell Programming and Scripting

assign awk's variable to shell script's variable?

Dear All, we have a command output which looks like : Total 200 queues in 30000 Kbytes and we're going to get "200" and "30000" for further process. currently, i'm using : numA=echo $OUTPUT | awk '{print $2}' numB=echo $OUTPUT | awk '{print $5}' my question is : can I use just one... (4 Replies)
Discussion started by: tiger2000
4 Replies

7. Shell Programming and Scripting

awk: assign variable with -v didn't work in awk filter

I want to filter 2nd column = 2 using awk $ cat t 1 2 2 4 $ VAR=2 #variable worked in print $ cat t | awk -v ID=$VAR ' { print ID}' 2 2 # but variable didn't work in awk filter $ cat t | awk -v ID=$VAR '$2~/ID/ { print $0}' (2 Replies)
Discussion started by: honglus
2 Replies

8. Shell Programming and Scripting

assign awk command result to a variable

#!/bin/sh # ## MYSTRING = `awk '/myApp.app/' /Users/$USER/Library/Preferences/loginwindow.plist` if then echo String not found defaults write /Users/$USER/Library/Preferences/loginwindow AutoLaunchedApplicationDictionary -dict-add -string Hide -bool YES -string Path -string... (9 Replies)
Discussion started by: dedmakar
9 Replies

9. Shell Programming and Scripting

assign value to variable using AWK

Dear Friends I have text file as like below, AAAAA|BHBHBH|VERYSMART AAAAA| KKKKKK|GOOD BBBBBB|JJJJJJJ|VERYGOOD CCCCC|HJHJHJ|BETTER CCCCC|UUUUU|GOOD i need to split into seperate files based on column 1 like as below AAAAA.TXT contains -------------------- BHBHBH.VERYSMART... (4 Replies)
Discussion started by: HAA
4 Replies

10. Shell Programming and Scripting

awk: assign a printf value to a variable

Is there any way to something like this?: variable=printf("%30s",var1) Thx. (2 Replies)
Discussion started by: Klashxx
2 Replies

Featured Tech Videos