The last argument contains spaces, how do I get it into a variable?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting The last argument contains spaces, how do I get it into a variable?
# 15  
Old 10-24-2011
Ahamed

In all there are 14 arguments. The first 12 arguments are variable in length but are separated by single space characters, so they pose no problems.
Arguments 13 and 14 are optional, when not populated they are padded with spaces.
Argument 13 is 4 characters longs and Argument 14 is 50 characters long.
So expected results are as follows:

Case 1:
V_SEVERITY=""
V_INFO=""

CAse 2:
V_SEVERITY="3333"
V_INFO=""

Case 3:
V_SEVERITY=""
V_INFO="123456789012345678901234567890123456789etc"

Case 4:
V_SEVERITY="9999"
V_INFO="one two three four five six seven eight nine ten X"

Hope that has lifted the confusion?

Zagga
# 16  
Old 10-24-2011
Actually, it doesn't matter.

Last edited by CarloM; 10-24-2011 at 12:20 PM.. Reason: waffling
# 17  
Old 10-24-2011
Try this...
Code:
V_SEVERITY=$(echo $*| awk 'NF>=13{if(length($13)==4){print $13}}')
V_INFO=$(echo $*|awk 'NF>=13{print($14)?substr($0,index($0,length($13)==4?($14?$14:$13):$13)):
length($13)==4?"":$13}'

--ahamed

Last edited by ahamed101; 10-24-2011 at 12:45 PM..
# 18  
Old 10-24-2011
Actually, if you have gawk you can just use match (which doesn't have to rely on the values, you can just grab the last 2 fixed length fields). Something like:
Code:
# cat xx.txt
UNIV ABORTED JOB  GS1 VMSDLCEREF 2011/10/24 11:59 0000183 0000000 UNIV56 X vmsdlceref
UNIV ABORTED JOB  GS2 VMSDLCEREF 2011/10/24 12:08 0000184 0000000 UNIV56 X vmsdlceref 3333
UNIV ABORTED JOB  GS3 VMSDLCEREF 2011/10/24 12:12 0000185 0000000 UNIV56 X vmsdlceref      12345678901234567890123456789012345678901234567890
UNIV ABORTED JOB  GS4 VMSDLCEREF 2011/10/24 12:14 0000186 0000000 UNIV56 X vmsdlceref 9999 one two three four five six seven eight nine ten X
# gawk --re-interval '{ matched=match($0," (.{4}) (.{50})$", myarray); if (matched) { printf ("[%s][%s]\n", myarray[1],myarray[2]);}}' xx.txt
[    ][                                                  ]
[3333][                                                  ]
[    ][12345678901234567890123456789012345678901234567890]
[9999][one two three four five six seven eight nine ten X]

which I should have thought of earlier since I was doing something similar just the other day, but there you go... Smilie

Last edited by CarloM; 10-24-2011 at 12:32 PM..
# 19  
Old 10-24-2011
@CarlM
Pretty neat work Smilie
Honestly, I didn't know that match function took a 3rd argument...

--ahamed
# 20  
Old 10-24-2011
Quote:
Originally Posted by zagga
Gooday
I have an argument string that contains 15 arguments.
The first 14 arguments are easy to handle because they are separated by spaces
Easy.

Code:
read A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF <"$FILE"

# 21  
Old 10-25-2011
Quote:
Originally Posted by Corona688
Easy.

Code:
read A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF <"$FILE"

If you read further down the thread you'll see the 13th argument can be spaces, so unfortunately that doesn't work.

Last edited by CarloM; 10-25-2011 at 06:10 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Check for spaces in input argument!

Hi guys, I have created a csh script which allows user to pass input argument with the script like: cluster_on_lev3.csh -t <value> -p <value> Example: cluster_on_lev3.csh -t 2.3 -p 0.05 Now I want to create an error code where if user passes input argument without spaces , the code... (16 Replies)
Discussion started by: dixits
16 Replies

2. Shell Programming and Scripting

Passing variable as an argument to another script

Hi, I am trying to pass a variable as an argument to another script. While substitution of variable, I am facing a problem. varaiable "a" value should be -b "FPT MAIN". When we pass "a" to another script, we are expecing it to get substitue as ./test.sh -b "FPT MAIN". But, it is getting... (9 Replies)
Discussion started by: Manasa Pradeep
9 Replies

3. Shell Programming and Scripting

Variable passed as argument

I have a script. #!/bin/sh cur_$1_modify_time=Hello echo "cur_$1_modify_time" When I run like sh /root/script1 jj I expect value "Hello" being assigned to variable "cur_jj_modify_time" and output being "Hello" ie echoing $cur_jj_modify_time But the output comes as # sh... (3 Replies)
Discussion started by: anil510
3 Replies

4. Shell Programming and Scripting

pass variable as sar argument

I am trying to get the details of iowait for last hour using sar. When I give date as argument it works. # sar -u -s 22:24:00 -e 23:24:00 Linux 2.6.35.13-26 (XX.server.com) 04/11/2012 10:30:03 PM CPU %user %nice %system %iowait %idle 10:40:04 PM all 5.03 ... (2 Replies)
Discussion started by: anil510
2 Replies

5. Shell Programming and Scripting

Pass command line argument to variable

Hi, I had written a shell script to pass command line argument to variable in a function. Here is my code: main if ; then .$1 echo $1 get_input_file else echo "input file $1 is not available" fi get_input_file() { FILE = "$1" echo $FILE } (10 Replies)
Discussion started by: Poonamol
10 Replies

6. Shell Programming and Scripting

about an argument with variable in sed

hi all let say I run the ./xxx.bash x x x x or ./xxx.bash x x x or ./xxx.bash x x x x x the last argument always a filename the last arugment filename format is 5-10-22.txt my question is how can I put this arugment into variable and I can use it in sed or any other way that i can use I... (1 Reply)
Discussion started by: yuesko
1 Replies

7. Shell Programming and Scripting

how to assign script argument to a variable

I have a script file. test.sh I am running it by command sh test.sh 10102004 where 10102004 is the script argument. I wan to assign this 10102004 to a variable. How can i do this? I tried &1 and awks ARGV its not working :( (2 Replies)
Discussion started by: rohankit
2 Replies

8. Shell Programming and Scripting

problem with spaces and argument parsing

public class HelloWorld { public static void main(String args) { System.out.println("Welcome, master"); } } and I compiled using javac HelloWorld.java ] Suppose that I execute the following command directly from the shell: java -XX:OnError="gdb - %p" HelloWorld Then it works... (8 Replies)
Discussion started by: fabulous2
8 Replies

9. Shell Programming and Scripting

Strip leading and trailing spaces only in a shell variable with embedded spaces

I am trying to strip all leading and trailing spaces of a shell variable using either awk or sed or any other utility, however unscuccessful and need your help. echo $SH_VAR | command_line Syntax. The SH_VAR contains embedded spaces which needs to be preserved. I need only for the leading and... (6 Replies)
Discussion started by: jerardfjay
6 Replies

10. Shell Programming and Scripting

Passing the command line argument in a variable

Hi, I am new to unix. Is their a way to pass the output of the line below to a variable var1. ls -1t | head -1. I am trying something like var1=ls -1t | head -1, but I get error. Situation is: I get file everyday through FTP in my unix box. I have to write a script that picks up first... (1 Reply)
Discussion started by: rkumar28
1 Replies
Login or Register to Ask a Question