awk and variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk and variable
# 1  
Old 08-03-2011
Tools awk and variable

hi,

i want to replace a string of characters by a part of this string plus a value:

Code:
CMD="/users/notes01"
NOSERVEUR=03

CMD2=`echo $CMD|awk '{ if ( $0 ~ /notes01/ )
                       { gsub( /notes01/,"notes$NOSERVEUR",$0);print }
                            else { print $0 }
                         }' `

i need to have :
CMD2= "/users/notes03"

i have to use awk and gsub function because of the number of differents CMD possibilities.

thanks in advance
Christian

---------- Post updated at 05:38 PM ---------- Previous update was at 05:32 PM ----------

Well i've tried this with success :

Code:
CMD2=`echo $CMD|awk -v NOSERVEUR="$NOSERVEUR" '{ if ( $0 ~ /notes01/ )
                       { gsub( /notes01/,"notes"NOSERVEUR,$0);print }
                            else { print $0 }
                         }' `

Is there a simple way ?

regards
Christian
# 2  
Old 08-03-2011
Something like this?
Code:
CMD="/users/notes01"
NOSERVEUR=03

case "$CMD" in
  *"notes01")
    CMD2=${CMD%??}$NOSERVEUR
    echo $CMD2;;
  *)
    echo "Something wrong??";;
esac


Last edited by Franklin52; 08-03-2011 at 01:36 PM..
# 3  
Old 08-03-2011
Hi,

Try if next script can work. I think it's simpler.
Code:
$ cat script.sh
#!/usr/bin/env bash

CMD="/users/notes01"
NOSERVEUR=03

echo "${CMD%%[0-9]*}$NOSERVEUR"
$ bash script.sh
/users/notes03

Regards,
Birei
# 4  
Old 08-04-2011
Thanks for your help

my request was just an exemple

the input is CMD="/users/notes01"
but could be also CMD="/users/notes01/dir1"

and i want to convert it with a variable to

CMD2="/users/notes02/dir1"
or
CMD2="/users/notes03/dir1"
etc.

if the input is

CMD="/users/notes01/dir1"
i will have
CMD2="/users/notes02/dir1"
or
CMD="/users/notes02/dir1"
then
CMD2="/users/notes01/dir1"

that's why i use the awk statement and gsub function with 2 variables

but the following doesn't work:

Code:
   CMD2=`echo $CMD|awk -v NOSERVEUR="$NOSERVEUR" -v NUM="$NUM" '{ if ( $0 ~ /"notes$NUM"/ )
                      { gsub( /"notes$NUM"/,"notes"NOSERVEUR,$0);print }
                         else { print $0 }
                      }' `



somedoy can help ? Smilie
thanks
# 5  
Old 08-04-2011
Hi,

Try next bash script:
Code:
$ cat script.sh
#!/usr/bin/env bash

CMD="/users/notes01"
CMD2="/users/notes02/dir1"
NOSERVEUR=03


function change_notes {
        echo "$1 -> ${1/notes[0-9][0-9]/notes$2}"
}


change_notes $CMD $NOSERVEUR
change_notes $CMD2 $NOSERVEUR
$ bash script.sh
/users/notes01 -> /users/notes03
/users/notes02/dir1 -> /users/notes03/dir1

Regards,
Birei
# 6  
Old 08-04-2011
Code:
echo $CMD | awk '{gsub("[0-9]","");print $0v}' v=$NOSERVER

# 7  
Old 08-05-2011
Thanks to try to help me but , i think i'm not clear.

There are 2 variables in input , if i say the input is :
/users/notes01/dir1

in fact it is :
/users/notes$NUM/dir1

so in a script i say:
NUM="01"
NOSERVEUR="02"
replace NUM by NOSERVEUR

or later

NUM="02"
NOSERVEUR="03"
replace NUM by NOSERVEUR

this is why i try the awk with 2 variables.
With only one it works.

regards
Christian
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grepping for one variable while using awk to parse an associated variable

Im trying to search for a single variable in the first field and from that output use awk to extract out the lines that contain a value less than a value stored in another variable. Both the variables are associated with each other. Any guidance is appreciated. File that contains the... (6 Replies)
Discussion started by: ncwxpanther
6 Replies

2. 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

3. Shell Programming and Scripting

awk print variable then fields in variable

i have this variable: varT="1--2--3--5" i want to use awk to print field 3 from this variable. i dont want to do the "echo $varT". but here's my awk code: awk -v valA="$varT" "BEGIN {print valA}" this prints the entire line. i feel like i'm so close to getting what i want. i... (4 Replies)
Discussion started by: SkySmart
4 Replies

4. Shell Programming and Scripting

Passing awk variable argument to a script which is being called inside awk

consider the script below sh /opt/hqe/hqapi1-client-5.0.0/bin/hqapi.sh alert list --host=localhost --port=7443 --user=hqadmin --password=hqadmin --secure=true >/tmp/alerts.xml awk -F'' '{for(i=1;i<=NF;i++){ if($i=="Alert id") { if(id!="") if(dt!=""){ cmd="sh someScript.sh... (2 Replies)
Discussion started by: vivek d r
2 Replies

5. Shell Programming and Scripting

HELP with AWK one-liner. Need to employ an If condition inside AWK to check for array variable ?

Hello experts, I'm stuck with this script for three days now. Here's what i need. I need to split a large delimited (,) file into 2 files based on the value present in the last field. Samp: Something.csv bca,adc,asdf,123,12C bca,adc,asdf,123,13C def,adc,asdf,123,12A I need this split... (6 Replies)
Discussion started by: shell_boy23
6 Replies

6. Shell Programming and Scripting

using awk for setting variable but change the output of this variable within awk

Hi all, Hope someone can help me out here. I have this BASH script (see below) My problem lies with the variable path. The output of the command find will give me several fields. The 9th field is the path. I want to captured that and the I want to filter this to a specific level. The... (6 Replies)
Discussion started by: Cowardly
6 Replies

7. Shell Programming and Scripting

AWK help. how to compare a variable with a data array in AWK?

Hi all, i have a data array as follows. array=ertfgj2345 array=456ttygkd . . . array=errdjt3235 so number or elements in the array can varies depending on how big the data input is. now i have a variable, and it is $1 (there are $2, $3 and so on, i am only interested in $1). ... (9 Replies)
Discussion started by: usustarr
9 Replies

8. 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

9. 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

10. AIX

really stuck- need to get a variable within a variable- AWK

Hi all, I have been struggling with this all day, and it is key to a conversion database I have to write. The data converts the information out of an array using AWK, and basically all I have to do is figure out how to get the value of a variable inside a variable. Right now at its... (11 Replies)
Discussion started by: jeffpas
11 Replies
Login or Register to Ask a Question