If Condition in awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If Condition in awk
# 8  
Old 05-03-2016
If value of field is not null still you are subtracting filed 2 and field 5.
Code:
awk '{ print (NF<6 ? $1" "$2" "$3" "$2-$4" "$4" "$5 : $0)}' file

This User Gave Thanks to looney For This Post:
# 9  
Old 05-04-2016
Hi Rudi,

I am sorry. I did not notice that I have misplaced the 'Output as Input ' in my post. I have changed that now.

I have given the output which i got after applying the code:

nawk '{$25=$25?$25:$24; $24=$2-$25}1' FS="\t" OFS="\t" sampl2 > op12

Regards,
am24

---------- Post updated at 02:23 AM ---------- Previous update was at 02:18 AM ----------

The problem is each field in my Input data is containing 7 columns. Some fields are having values in all the 7 cols and some fields are having blanks in 7 cols(null).

Anyways thanks for your time on this Rudi.

I will try to do this in some other platform then.

Thanks & Regards,
am24

---------- Post updated at 02:30 AM ---------- Previous update was at 02:23 AM ----------

Hi Looney.

Thanks for the code. I have applied it but not achieved the results .

Regards,
am24
# 10  
Old 05-04-2016
Looks like we've been talking past each other; the definition of <TAB> as the input and output field sepatator is responsible for the 0 field at EOL. For fixed widths fields this obviously doesn't work... a clear specification as the first step would have helped?
GNU awk has the FIELDWIDTHS variable which could help in your case of constant field widths. For NON-GNU awk, try
Code:
awk '
        {CNF = (length()-4)/8
         printf "%3s", substr ($0, 1, 3)
         for (i=0; i<=CNF; i++) T[i+2] = substr ($0, 4+i*8, 8)
         T[25] = (T[25]+0)?T[25]:T[24]
         T[24] = T[2] - T[25]
         for (i=2; i<=CNF+2; i++) printf "%8s", T[i]
         printf RS
        }
' file

These 2 Users Gave Thanks to RudiC For This Post:
# 11  
Old 05-04-2016
Thanks Rudi.

I will try the code and will let you know about the results.

Regards,
am24

---------- Post updated at 03:47 AM ---------- Previous update was at 03:26 AM ----------

Hi Rudi,

You are just amazing..!! I thank you very much.

I have tried the code and it worked without any errors. I got the results exactly which i want.

I am troubling you little more. Can you please explain me the code because i want to understand it thoroughly.

Thanks for your valuable time.

Regards,
am24
# 12  
Old 05-04-2016
Code:
awk '
        {CNF = (length()-4)/8                                   # as NF doesn't count fields correctly, create a "corrected" NF from line length
         printf "%3s", substr ($0, 1, 3)                        # the first field can be printed independently, and must be as it deviates in format
         for (i=0; i<=CNF; i++) T[i+2] = substr ($0, 4+i*8, 8)  # fill in the T array with respective fields 8 chars long.
         T[25] = (T[25]+0)?T[25]:T[24]                          # do the requested field shifting
         T[24] = T[2] - T[25]                                   # do the requested arithmetics
         for (i=2; i<=CNF+2; i++) printf "%8s", T[i]            # formatted print of the residual fields
         printf RS                                              # print line feed
        }
' file

# 13  
Old 05-04-2016
Hi Rudi,

Thank you for the brief explanation .

Regards,
am24
Login or Register to Ask a Question

Previous Thread | Next Thread

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

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

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

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

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

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

8. Shell Programming and Scripting

awk with multiple condition

Hi Guys, I just wanted to print all the lines execpt 1st and 3rd line. For that i wrote a awk command, awk 'NR != 1 || NR != 3 {print $0}' c.out the command is working if i give an equal to instead of not equal to. In the case of not equal to, it gives me the entire file. Can you... (18 Replies)
Discussion started by: mac4rfree
18 Replies

9. Shell Programming and Scripting

Problem with IF condition in awk

Hi all; I'm stuck with this simple awk script,i need to group the lines which the position of 28 length 3 that contains "688" into 1 group and other than "688" into another group. My problem is the script only read other than "688" and ignores the lines which contains "688". The file look... (2 Replies)
Discussion started by: ashikin_8119
2 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
Login or Register to Ask a Question