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 07: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 08: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 01: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 #283
Difficulty: Easy
Early computers were built to perform a series of single tasks, like a calculator.
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