Visit Our UNIX and Linux User Community


awk with (if condition)


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers awk with (if condition)
# 1  
Old 04-30-2020
awk with (if condition)

I'm unable to apply if condition to extract tsalary < 7000 and also want to sort data without disturbing header
some commands which i used here are:-
Code:
awk '{if(tsalary($4) < 7000)}' employee
tail -5 employee|awk '{print $4}' employee
tail -5 |sort -r employee

Name	tDesignation	tDepartment	tSalary
Thomas	Manager		Sales		        5000
Jason	Developer	       Technology	        5500
Sanjay	Sysadmin	       Technology	        7000
Nisha	Manager	        Marketing      	9500
Vicky	DBA		       Technology	         6000

Moderator's Comments:
Mod Comment
Use code tags please, not bold ones. Thanks!

Last edited by Peasant; 04-30-2020 at 06:21 AM.. Reason: Added tags
# 2  
Old 04-30-2020
Something like this?
Code:
[~/tmp] 0 $ awk  '$4 <= 7000 {print}' "file.txt" | grep -v tSalary  | sort -k 4

Thomas	Manager		Sales		5000
Jason	Developer	Technology	5500
Vicky	DBA		Technology	6000
Sanjay	Sysadmin	Technology	7000

Hope this helps

EDIT:
Had < > the wrong way

Last edited by sea; 04-30-2020 at 07:42 AM..
This User Gave Thanks to sea For This Post:
# 3  
Old 04-30-2020
Quote:
Originally Posted by sea
Something like this?
Code:
[~/tmp] 0 $ awk  '$4 <= 7000 {print}' "file.txt" | grep -v tSalary  | sort -k 4

Thomas	Manager		Sales		5000
Jason	Developer	Technology	5500
Vicky	DBA		Technology	6000
Sanjay	Sysadmin	Technology	7000

Hope this helps

EDIT:
Had < > the wrong way
yes! this command is very useful but in some cases it also give header along with the extracted data
awk '$5 >= 6000' "employee" | grep -v tsalary | sort -k 5

500 Vicky DBA Technology 6000
300 Sanjay Sysadmin Technology 7000
400 Nisha Manager Marketing 9500
id Name tDesignation tDepartment tSalary
# 4  
Old 04-30-2020
Dont do BOLD for code.
Do
Code:
CODE

for code.

And proper writing helps.... tSalary....
Or use grep -i ...

And btw...
Your code would not show the 'header' on occasion, but always...
Unless your headings differ from file to file...
This User Gave Thanks to sea For This Post:
# 5  
Old 04-30-2020
Try this for leading header and sorted data:
Code:
awk 'NR == 1; $4 < 7000 {print | "sort -k4"}' file
Name	tDesignation	tDepartment	tSalary
Thomas	Manager	Sales	5000
Jason	Developer	Technology	5500
Vicky	DBA	Technology	6000

# 6  
Old 04-30-2020
Quote:
Originally Posted by RudiC
Try this for leading header and sorted data:
Code:
awk 'NR == 1; $4 < 7000 {print | "sort -k4"}' file
Name	tDesignation	tDepartment	tSalary
Thomas	Manager	Sales	5000
Jason	Developer	Technology	5500
Vicky	DBA	Technology	6000

I slightly modified your code...
Was not my first attempt, just one of the... lets do this variant with the current variable... moments...

I have no idea WHY this works, because I wanted to EXclude the 'Name'-line with != and =! just to be sure:
Code:
awk '$1 == Name; $4 < 7000 {print | "sort -k4"}' file.txt
Thomas	Manager		Sales		5000
Jason	Developer	Technology	5500
Vicky	DBA		Technology	6000

EDIT:
Figured:
Code:
awk '$1 ==! "Name"; $4 < 7000 {print | "sort -k4"}' file.txt
Thomas	Manager		Sales		5000
Jason	Developer	Technology	5500
Vicky	DBA		Technology	6000

But I still dont understand why $1 == Name removes the Name/tSalary-line

Last edited by sea; 04-30-2020 at 12:31 PM..
This User Gave Thanks to sea For This Post:
# 7  
Old 04-30-2020
Quote:
Originally Posted by sea
.
.
.
Figured:
Code:
awk '$1 ==! "Name"; $4 < 7000 {print | "sort -k4"}' file.txt
Thomas    Manager        Sales        5000
Jason    Developer    Technology    5500
 Vicky    DBA        Technology    6000

Try this:
Code:
awk '$1 == "Name"; $4 < 7000 {print | "sort -k4"}' file
Name    tDesignation    tDepartment    tSalary
Thomas    Manager    Sales    5000
Jason    Developer    Technology    5500
Vicky    DBA    Technology    6000

Quote:
But I still dont understand why $1 == Name removes the Name/tSalary-line
Name unquoted is an uninitialized variable name defaulting to "". Any empty $1 in sight?
This User Gave Thanks to RudiC For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #778
Difficulty: Medium
Harmonic analysis is a branch of mathematics concerned with the representation of functions or signals as the superposition of basic waves.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

If condition on awk

Hi All, Would you guys help me? I have a file that consists of several unstructured fields. in this file I will take the code field and count_berry field. but the position of the count_berry field is always changing.the column for code is always structured, which is found in column 6 I have... (4 Replies)
Discussion started by: kivale
4 Replies

2. Shell Programming and Scripting

Using like operator in awk if condition

Hello All, I have developed a script which selects a particular filed from a file ,trims it,searches for a particular pattern and then mail it when found. cat test_file.txt |sed -n '5,$p'|sed -e 's/ //g'|awk -F'|' '{if ($4 !="Alive") print $1,$2,$3,$4}' >> proc_not_alive.txt It is... (4 Replies)
Discussion started by: karthik adiga
4 Replies

3. Shell Programming and Scripting

If Condition in awk

Hi All, I have the below Input: 1 700 1200 400 1300 2 2000 1000 2000 1500 600 3 1400 200 1000 1000 1200 4 1300 500 600 200 I want to modify the field 5 and field 4 as below. If value in field 5 is null then value of field 4 should be in field 5. and then the value of... (12 Replies)
Discussion started by: am24
12 Replies

4. Shell Programming and Scripting

awk condition

Hi Gurus, one of my current script, there is awk statement as below: awk '{a=a?a" "$3:$3}END{for (i in a) print i,a}' I don't understand what's "{a=a?a" "$3:$3}" mean? can anybody give me a brief explaination. thanks in advance. (3 Replies)
Discussion started by: ken6503
3 Replies

5. UNIX for Dummies Questions & Answers

awk - if else condition

Need help in awk command. Need to check 4th column of a file, if it is CAR then awk should print as is and if 4th column is not present, awk should print BIKE Input File content : 1,abc,55,CAR 3,bb,dd,CAR 5,ddd,tttt 8,ee,55 --------------------- Out put will look like: 1,abc,55,CAR... (6 Replies)
Discussion started by: vegasluxor
6 Replies

6. Shell Programming and Scripting

awk - Division with condition

Hi Friends, I have an input file like this cat input chr1 100 200 1 2 chr1 120 130 na 1 chr1 140 160 1 na chr1 170 180 na na chr1 190 220 0 0 chr1 220 230 nd 1 chr2 330 400 1 nd chr2 410 450 nd nd chr3 500 700 1 1 I want to calculate the division of 4th and 5th columns. But, if... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

7. UNIX for Dummies Questions & Answers

Condition check using awk

Hi, I have a file in the following format "SYLVESTER,WILLARD G"|"S00633600"|"221052958A"|"H2256"|"015"|""|"00000042BASJ"|"665303"|"N"|"20100211"|"380.4"|""|""|""|"5400"|"20110218"|""|"20110218"|"FEESC"|"D"|"F"|"P" "PURINGTON-KELLEY,C"|"S00808783"|"029424717A"|"H2256"|"024"|"MEMBER JOINED... (3 Replies)
Discussion started by: nua7
3 Replies

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

9. Shell Programming and Scripting

awk if condition help

Hi, I need little help with awk's if condition statement. I have following code: $ ssh myRemotehost 'ps ww -fu tomcat ' | awk ' { if ($1 == "tomcat") print "tomcat (pid " $2 ") is running... "; else print "tomcat stopped or dead" }' Prints: tomcat stopped or dead tomcat (pid 12345) is... (6 Replies)
Discussion started by: davidtd
6 Replies

10. Shell Programming and Scripting

awk and condition help

Hi... i just want to write a script for the follwing command "display status" and the normal output is... AN100> display status 12.13.2006 12:03:25 AN-2000-1 CC NOT PRESENT 16.50.80.49 status: Status for PACKET GLI A in the TOP / LEFT shelf of frame 0: status: The current active LAN is... (5 Replies)
Discussion started by: gini
5 Replies

Featured Tech Videos