Help with awk - variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with awk - variable
# 1  
Old 04-01-2016
Help with awk - variable

Hi All,

would appreciate help with the awk statement below, i not seeing the value of "color" as the variable in awk. not sure what i am missing

Code:
cat fruits
red:apples
yellow:banana


Code:
 cat fruits | awk '{
  if ( $1 == "red" ) {
                    color=red
           } else {
                    color=yellow
           }; split($0,a,":"); print "color of fruit found is", color } END { print "End of colour report"}'


output:

Code:
color of fruit found is
color of fruit found is
End of colour report!

# 2  
Old 04-01-2016
As you don't assign FS (the field separator), the default (multiple white space) is taken. Thus $1 is always the entire line, "red" is not found, and the else branch of your if construct is taken. color is assigned yellow, a variable that is not set and thus "contains" the empty string. Which then is put out.
Why do you split $0 into array a which is never used?

Please be aware that awk doesn't need cat; awk '...' fruits will do.

Last edited by RudiC; 04-01-2016 at 12:28 PM..
This User Gave Thanks to RudiC For This Post:
# 3  
Old 04-02-2016
Code:
awk '
BEGIN {
        FS=":"
        }

        { # default for all lines
                color="yellow"
        }

$1 == "red" {
        color=$1
        }

        { # all lines
        fruit=$2
        print "fruit:",fruit,"color:",color
        split($0,a,":")
        print "1:",a[1]
        }

END {
        print "End of colour report, #",NR
       }
' fruits

This User Gave Thanks to kshji For This Post:
# 4  
Old 04-02-2016
thanks guys, much appreciated.
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