Pass column number as variable to awk and compare with a string.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Pass column number as variable to awk and compare with a string.
# 1  
Old 11-12-2014
Question Pass column number as variable to awk and compare with a string.

Hi All,

I have a file test.txt.

Content of test.txt :

1 vinay se
2 kumar sse
4 kishore tl

I am extracting the content of file with below command.

Code:
awk '$2 ~ "vinay" {print $0}' test.txt

Now instead of hardcoding $2 is there any way pass $2 as variable and compare with a pattern ?

In short i would like to know whether is there a way to configure the column name in awk?

Kindly let me know if i am not clear
# 2  
Old 11-12-2014
Quote:
Originally Posted by Girish19
... is there any way pass $2 as variable ...
Yes. Try
Code:
deleted due to major inaccuracy

or
Code:
deleted due to major inaccuracy


Last edited by junior-helper; 11-12-2014 at 08:08 AM.. Reason: removed inaccurate commands (thank you RudiC for the important hint)
# 3  
Old 11-12-2014
Yes it works.

Can you please help me if i want to execute the same on remote server?
# 4  
Old 11-12-2014
Quote:
Originally Posted by Girish19
. . .
Now instead of hardcoding $2 is there any way pass $2 as variable and compare with a pattern ?
. . .
That depends on what you mean when saying "$2".
If you want the second positional parameter of the function or shell script to be used, junior-helper's 2. proposal is fine, assumed that parameter holds an integer number.
If you want the file's second column to be addressed, use a plain 2 in j-h's script:
Code:
awk -v COL=2 '$COL ~ "vinay" {print $0}' test.txt

@junior-helper: I don't think your first proposal will work, as it tries to match $$2 against "vinay" ...

---------- Post updated at 11:12 ---------- Previous update was at 11:06 ----------

Quote:
Originally Posted by Girish19
Yes it works.

Can you please help me if i want to execute the same on remote server?
Some more context, please.

Last edited by RudiC; 11-12-2014 at 06:12 AM..
# 5  
Old 11-12-2014
@RudiC

I would like execute a command as below.

ssh user@host " AWK Command "

But the AWK command should be flexible enough to compare the pattern with column which is passed as input.

For example :

For below o/p i want to check for pattern 9511 in only 2nd column or only 1st column.
I need to pass the column as i/p variable to awk and compare with the pattern.


$ netstat -an | grep 951
200.103.10.10.50224 100.103.10.10.9511 49640 0 49640 0 ESTABLISHED
200.103.10.10.50263 100.103.10.10.9512 49640 0 49640 0 ESTABLISHED
200.103.10.10.50278 100.103.10.10.9513 49640 0 49640 0 ESTABLISHED
200.103.10.10.50292 100.103.10.10.9514 49640 0 49640 0 ESTABLISHED
# 6  
Old 11-12-2014
RudiC,
I don't know why, but it works (I always test the commands before posting them).
I also think there is (almost) no difference between my 2 proposals.
If the first would fail, the second would fail too, no(?)
# 7  
Old 11-12-2014
It seems to work because $COL will evaluate to $0 when COL has a string value. So your code will match $0 against "vinay" and print the entire first line. Test this by setting col='$3' or adding some fields to the file.
The same is valid for your second proposal - if no positional parameter is available, you'll match $0 against "vinay". Test this by e.g. set -- 2 3 4 and running your code. $2 will be "3", and field 3 doesn't have "vinay" - nothing's printed...

---------- Post updated at 12:12 ---------- Previous update was at 12:10 ----------

Quote:
Originally Posted by Girish19
. . .
ssh user@host " AWK Command "
. . .
What's the results of using the proposals in this thread for your " AWK Command "?
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Concatenate a string and number and compare that with another string in awk script

I have below code inside my awk script if ( $0 ~ /SVC IN:/ ) { svc_in=substr( $0,23 , 3); if (msg_start == 1 && msg_end == 0) { msg_arr=$0; } } else if ( $0 ~ /^SVC OUT:/ ) { svc_out=substr( $0, 9, 3); if (msg_start == 1 && msg_end == 0) ... (6 Replies)
Discussion started by: bhagya123
6 Replies

2. Shell Programming and Scripting

Search for string in column using variable: awk

I'm interested to match column pattern through awk using an external variable for data: -9 1:751343:T:A -9 0 T A 0.726 -5.408837e-03 9.576603e-03 7.967536e-01 5.722312e-01 -9 1:751756:T:C -9 0 T C 0.727 -5.360458e-03 9.579447e-03 7.966977e-01 5.757858e-01... (7 Replies)
Discussion started by: genome
7 Replies

3. UNIX for Advanced & Expert Users

Pass variable to awk command search string

I must have forgot how to do this, but, I am attempting to enter a variable into an awk / gawk search pattern. I am getting a value from user input to place in a specific section of a 132 character string. my default command is .... gawk --re-interval '/^(.{3}P .{4}CYA.{8}1)/' ... (3 Replies)
Discussion started by: sdeevers
3 Replies

4. Shell Programming and Scripting

Help with compare two column and print out column with smallest number

Input file : 5 20 500 2 20 41 41 0 23 1 Desired output : 5 2 20 0 1 By comparing column 1 and 2 in each line, I hope can print out the column with smallest number. I did try the following code, but it don't look good :( (2 Replies)
Discussion started by: perl_beginner
2 Replies

5. Red Hat

pass a variable line number to sed

num=10 sed -n '$num p' test.txt sed -n '10 p' test.txt works however i am putting the sed command in a loop and the line number is not static Can someone please help me how to achive this. (1 Reply)
Discussion started by: figure20012
1 Replies

6. Shell Programming and Scripting

awk arrays - compare value in second column to variable

Hello, I am trying to redirect files to a directory by using a config file. The config files is as such: xxxxxx,ID,PathToDirectory xxxxxx,ID2,PathToDirectory2 and so on... I have a variable that should match one of these IDs. I want to load this config file into an awk array, and... (2 Replies)
Discussion started by: jrfiol
2 Replies

7. Solaris

awk - Print variable number of colums from a starting column

Hi guys, I usualy am able to google awk stuff but I can't find it so far and there are so many awking gurus here that I will give it a shot. I want to print $1;$3;"$5 up to the $NF". In other words, I can have 1000 colums, but need to have $5 up to the end. I started with the idea of... (2 Replies)
Discussion started by: plmachiavel
2 Replies

8. Shell Programming and Scripting

[awk]compare a number in a string with a list

Hi, I have a program written in awk and I want to extend it to do another task. My program is a list of CVS log reports of a repository. For each file, I have some fields. One of the fields is the comment field. I want to know how I can check if a comment (which is a free text field)... (8 Replies)
Discussion started by: sandeepk1611
8 Replies

9. Shell Programming and Scripting

awk conditional expression to compare field number and variable value

Hi, I'm trying to compare the value in a field to the value in a variable using awk. This works: awk '$7 == "101"'but this is what I want (and it doesn't work): value=101 awk '$7 == "$value"' Any help or insight on this would be great. Thanks in advance. (1 Reply)
Discussion started by: goodbenito
1 Replies

10. Shell Programming and Scripting

need help with counting of files then pass number to variable

hi all, i'm trying to pass a count of files to a variable thru these set of codes: sh_count=$(ls -1 fnd_upload_LV*.* |wc -l) problem is if no files matches that, it will give an error "ls: fnd_upload_LV*.*: No such file or directory". how do i avoid having the shell script show that... (2 Replies)
Discussion started by: adshocker
2 Replies
Login or Register to Ask a Question