Help with awk command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with awk command
# 1  
Old 05-03-2011
Help with awk command

Hi ,

I am writing a awk script which will check the values in field 1 and field 2 based on these values the awk has to update field 4.

Source data
Code:
ABC,XYZ,1,2,3,XXXXXXXXXXXXXX,1,2,3
ABC,123,1,2,3,XXXXXXXXXXXXXXX,1,2,3
ABC,DEF,1,2,3,XXXXXXXXXXXXXXX,1,2,3
ABC,123,1,2,3,XXXXXXXXXXXXXXX,1,2,3

target data
Code:
ABC,XYZ,1,2,3,This is a valid record,1,2,3
ABC,123,1,2,3,XXXXXXXXXXXXXXX,1,2,3
ABC,DEF,1,2,3,This is a valid record,1,2,3
ABC,123,1,2,3,XXXXXXXXXXXXXXX,1,2,3

pls tell me how can i compare two times in awk example.

I tried writing the below awk ..but it's wrong and not giving me the required output

Code:
awk '{$1=='ABC" ;$2=="XYZ" } print $6=='This is a valid record'
END

where I am doing wrong in the above script.

Regards,
Deepti
Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 05-03-2011 at 12:34 PM.. Reason: code tags, please!
# 2  
Old 05-03-2011
Code:
awk -F, '$1=="ABC"&&($2=="XYZ"||$2=="DEF") {$6="This is a valid record"}1' infile

# 3  
Old 05-04-2011
Thanks kevintse.

---------- Post updated at 11:26 PM ---------- Previous update was at 07:34 PM ----------

hey The code is removing the delimters and getting the entire line value in the first column as below.

ABCDEF123This is a valid record123

Regards,
Deepti
# 4  
Old 05-04-2011
Sorry, I didn't test the code, now it should work:

Code:
awk -F, '$1=="ABC"&&($2=="XYZ"||$2=="DEF") {$6="This is a valid record"}1' OFS="," infile

# 5  
Old 05-04-2011
Thanks Kevintse, it working can you please tell me why we are using 1' after the record word, i executed it with out the 1 the script is returning nothing .., what exactly 1 will do here and do we have more options which can be used in the place of 1...

I just want to know the various options I have started studing the awk but if you can explain that will be helpful

Code:
awk -F, '$1=="ABC"&&($2=="XYZ"||$2=="DEF") {$6="This is a valid record"}1' OFS="," infile

Moderator's Comments:
Mod Comment Please use [code] and [/code] tags when posting code, data or logs etc. to preserve formatting and enhance readability, thanks.

Last edited by zaxxon; 05-04-2011 at 09:21 AM.. Reason: code tags
# 6  
Old 05-04-2011
The preceding script can be rewritten a little verbosely as the following:
Code:
awk -F, '$1=="ABC"&&($2=="XYZ"||$2=="DEF") {$6="This is a valid record"}1{print}' OFS="," infile

or
Code:
awk -F, '$1=="ABC"&&($2=="XYZ"||$2=="DEF") {$6="This is a valid record"}{print}' OFS="," infile

Actually it can be any number that is not 0, which evaluates to FALSE.
A typical awk program will contain PATTERN{ACTION}, either PATTERN or ACTION is optional, but not both. When PATTERN is absent, ACTION will always be executed, when ACTION is absent, it defaults to {print}.

So now you should be able to figure out what that one liner does.
Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Pass awk field to a command line executed within awk

Hi, I am trying to pass awk field to a command line executed within awk (need to convert a timestamp into formatted date). All my attempts failed this far. Here's an example. It works fine with timestamp hard-codded into the command echo "1381653229 something" |awk 'BEGIN{cmd="date -d... (4 Replies)
Discussion started by: tuxer
4 Replies

2. Shell Programming and Scripting

Multiple command execution inside awk command during xml parsing

below is the output xml string from some other command and i will be parsing it using awk cat /tmp/alerts.xml <Alert id="10102" name="APP-DS-ds_ha-140018-componentFailure-S" alertDefinitionId="13982" resourceId="11427" ctime="1359453507621" fixed="false" reason="If Event/Log Level(ANY) and... (2 Replies)
Discussion started by: vivek d r
2 Replies

3. Shell Programming and Scripting

awk command to compare a file with set of files in a directory using 'awk'

Hi, I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files. To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
Discussion started by: anandek
10 Replies

4. Shell Programming and Scripting

awk command in script gives error while same awk command at prompt runs fine: Why?

Hello all, Here is what my bash script does: sums number columns, saves the tot in new column, outputs if tot >= threshold val: > cat getnon0file.sh #!/bin/bash this="getnon0file.sh" USAGE=$this" InFile="xyz.38" Min="0.05" # awk '{sum=0; for(n=2; n<=NF; n++){sum+=$n};... (4 Replies)
Discussion started by: catalys
4 Replies

5. Shell Programming and Scripting

awk command for simple join command but based on 2 columns

input1 a_a a/a 10 100 a1 a_a 20 200 b1 b_b 30 300 input2 a_a a/a xxx yyy a1 a1 lll ppp b1 b_b kkk ooo output a_a a/a 10 100 xxx yyy (2 Replies)
Discussion started by: ruby_sgp
2 Replies

6. UNIX for Dummies Questions & Answers

Basic awk question...getting awk to act on $1 of the command itself

I have a script problem that I am not able to solve due my very limited understanding of unix/awk. This is the contents of test.sh awk '{print $1}' From the prompt if I enter: ./test.sh Hello World I would expect to see "Hello" but all I get is a blank line. Only then if I enter "Hello... (2 Replies)
Discussion started by: JasonHamm
2 Replies

7. Shell Programming and Scripting

awk/sed Command : Parse parameter file / send the lines to the ksh export command

Sorry for the duplicate thread this one is similar to the one in https://www.unix.com/shell-programming-scripting/88132-awk-sed-script-read-values-parameter-files.html#post302255121 Since there were no responses on the parent thread since it got resolved partially i thought to open the new... (4 Replies)
Discussion started by: rajan_san
4 Replies

8. Shell Programming and Scripting

assign a command line argument and a unix command to awk variables

Hi , I have a piece of code ...wherein I need to assign the following ... 1) A command line argument to a variable e.g origCount=ARGV 2) A unix command to a variable e.g result=`wc -l testFile.txt` in my awk shell script When I do this : print "origCount" origCount --> I get the... (0 Replies)
Discussion started by: sweta_doshi
0 Replies
Login or Register to Ask a Question