Passing space seprated variables in awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Passing space seprated variables in awk
# 1  
Old 09-19-2011
Passing space seprated variables in awk

Hi,

How to pass space seprated variables in awk. (HP-UX, sh shell)

I have the problem like below:

Code:
var="Hello"
var2="Manu Batham"
echo $var2 | awk -v variable=${var} '{ printf "%s %s", variable, $1}'

and its output is:
Hello Manu

while output should be:
Hello Manu Batham

Please help me to accept it spaces as well.

Thanks,
Manu
# 2  
Old 09-19-2011
If you want to pass spaces on the command line, you should enclose the assignment in quotations, i.e.

Code:
awk -v "variable=${var}"

But actually your problem is the input read from stdin (by a pipe from echo). In this case, you are using $1. The default field separator is whitespace, so $2 will be "Batham". You change this with

Code:
awk -F','

for example to make it a comma. It can also be assigned by awk variable FS. If you want an entire input to become a single field, set the FS to something ridiculous.

Code:
[mute@geek ~]$ echo "Hello World" | awk '{print $1}' FS="something that never happens"
Hello World

These 2 Users Gave Thanks to neutronscott For This Post:
# 3  
Old 09-19-2011
Quote:
Originally Posted by neutronscott
If you want an entire input to become a single field, set the FS to something ridiculous.

Code:
[mute@geek ~]$ echo "Hello World" | awk '{print $1}' FS="something that never happens"
Hello World

That's great Smilie

Not sure it's necessary, though. The entire, unmodified line is always available as $0 (unless you modify it yourself before!)
# 4  
Old 09-19-2011
Hey neutronscott,

Your first option worked.

Code:
awk -v "variable=${var}"

I tried that before, but that time I was not putting it inside double quotes.

Thanks.
# 5  
Old 09-19-2011
Quote:
Originally Posted by Corona688
That's great Smilie

Not sure it's necessary, though. The entire, unmodified line is always available as $0 (unless you modify it yourself before!)
But yes, in OP's example $0 would be most easy solution. Smilie

My mind just read that he wanted spaces in a single field. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk - passing variables in and out

Am looking to pass some Linux environment variables into AWK , can I simply use the -v option ? awk -F: -v AHOME=$HOME '{ if {rm AHOME/file.txt a=2 } }' config.txt ... (4 Replies)
Discussion started by: alldbest
4 Replies

2. Shell Programming and Scripting

Passing awk variables to bash variables

Trying to do so echo "111:222:333" |awk -F: '{system("export TESTO=" $2)}'But it doesn't work (2 Replies)
Discussion started by: urello
2 Replies

3. Shell Programming and Scripting

Passing variables to awk

Hi guys, I need to fetch data from logfile between two given dates,i got the below code from our forum.It works perfect,but i need to enter the value dynamically to awk while running. awk '/2012 Jun/{p=1}!/2012 Jul/ && prev~/2012 Jul/ && p{p=0}{prev=$0}p' file i tried the below code,but... (4 Replies)
Discussion started by: mohanalakshmi
4 Replies

4. Shell Programming and Scripting

PAssing variables to awk arithmetic

Hi all, I am wanting to pass variables from a file to an awk arithmetic formula. When I use the formula with the value it works well. As soon as I make these variables I get an inf (infinity) response. I can certainly echo the variables back and they look correct. My googling for answers has... (3 Replies)
Discussion started by: gafoleyo73
3 Replies

5. Shell Programming and Scripting

Passing variables into AWK

I'm trying to use awk to write new entries to a hosts file if they don't exist. I need to do so depending on the type of system I have. Below is what I have, but it isn't working. awk -v myip1=$IP1 myip2=$IP2 myhost1=$HOST1 myhost2=$HOST2' BEGIN { mqhost1=0; mqhost2=0; stap1=0; stap2=0; } ... (4 Replies)
Discussion started by: Boomn4x4
4 Replies

6. Shell Programming and Scripting

ksh passing to awk multiple dyanamic variables awk -v

Using ksh to call a function which has awk script embedded. It parses a long two element list file, filled with text numbers (I want column 2, beginning no sooner than line 45, that's the only known thing) . It's unknown where to start or end the data collection, dynamic variables will be used. ... (1 Reply)
Discussion started by: highnthemnts
1 Replies

7. Shell Programming and Scripting

Passing awk variables to shell

Hi. I need to parse file and assign some values to variables, right now i do like below MYHOMEDIR=`awk '/Home/ {print $NF}' output.txt` MYSHELL=`awk '/Shell/ {print $NF}' output.txt` PRGRP=`awk '/Primary/ {print $NF}' output.txt` SECGRP=`awk '/Second/ {print $NF}' output.txt` In this... (10 Replies)
Discussion started by: urello
10 Replies

8. Shell Programming and Scripting

Passing awk Variables

I am trying to pass the results from a variable gathered from awk, however when I echo the 'PARSE' and 'SUB', the response is blank. This is my command. awk -F= '/Unit/''{ PARSE=substr($2,1,5) ; SUB=substr($2,1,1) }' inputfile.lst Is this a kind of valid attempt or am I obligated to declare... (3 Replies)
Discussion started by: gozer13
3 Replies

9. Shell Programming and Scripting

Passing Variables to Awk

Hi I have a unix shell script with an awk statement. I would like to print some of the fields of an input file. However, I would like to print them dynamically, ie by passing the literal $1 $3 into the script to define the output. I have tried the following: variable1='$1' awk... (2 Replies)
Discussion started by: Bab00shka
2 Replies

10. Shell Programming and Scripting

Passing Variables to AWK

Does anybody have an explanation for the following: The following scripts runs fine on IRIX64 6.5 but has bugs on Solaris 8. #! /bin/sh echo run only on an SGI machine echo type in linenumber read j echo value read value awk -f rmspass2 level=$value $j'step1.mlf' When the script is... (5 Replies)
Discussion started by: AreaMan
5 Replies
Login or Register to Ask a Question