Help in understanding awk expression


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help in understanding awk expression
# 1  
Old 02-23-2012
Help in understanding awk expression

Hi,
Could somebody help me in understanding the following awk expression:

Code:
awk -v n="POINT" '/%/{print $0 "\n" n ;next}1' < file name

Thanks,
Arun
# 2  
Old 02-23-2012
Code:
# Before the program is run, set the variable n to the value "POINT"
-v n="POINT"

# For every line containing % somewhere:
'/%/ {
        # Print the entire line, followed by a newline, followed by "POINT"
        print $0 "\n" n
        # Skip this line so the '1' below doesn't print it
        next
# The '1' after the code block tells it to print every single line.
# It could be an expression too.
} 1' < file name

But I would've just written it as:

Code:
awk -v n="POINT" '/%/ { $0=$0"\n" n } 1'

To avoid the 'print' and the 'next'. For any line matching %, it just changes the current line( $0 ) to add "\nPOINT" to the end, so the print-every-line statement prints correctly in both cases.
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 02-23-2012
Hi Corona,

Thanks for the explanation. Could you please tell me how to change this code to replace the % to POINT only for the particular in specific the 3rd occurrence and come out immediately without replacing the other entries in the same file.

Thanks a lot in advance Smilie

Arun
# 4  
Old 02-23-2012
Quote:
Originally Posted by arun_maffy
Hi Corona,

Thanks for the explanation. Could you please tell me how to change this code to replace the % to POINT only for the particular in specific the 3rd occurrence and come out immediately without replacing the other entries in the same file.

Thanks a lot in advance Smilie

Arun
I don't perfectly understand what you want. Could you show an example of the input you have, and an example of the output you want?
# 5  
Old 02-24-2012
I have a file like this:
%
10
%
NAME_1
NAME_2
NAME_3
NAME_4
%
LOCAL
%
02/02/12
%
08:00:00
%
YES
%

Where I need to change the value of LOCAL to POINT. Since the value of LOCAL is dynamic (it can assume any text), I thought of using % as the separator. It should change the value of text that is after the 3rd occurrence of % . So the output should be like:

%
10
%
NAME_1
NAME_2
NAME_3
NAME_4
%
POINT
%
02/02/12
%
08:00:00
%
YES
%

Your help is much appreciated.

Thanks,
Arun
# 6  
Old 02-24-2012
awk

Quote:
Originally Posted by arun_maffy
Hi,
Could somebody help me in understanding the following awk expression:

Code:
awk -v n="POINT" '/%/{print $0 "\n" n ;next}1' < file name

you can assign the dynamic value in n like,

Code:
awk -v n="$dynamicval" 'BEGIN{i=0;}/^%$/{i++}$0 !~ /^%$/{if(i == 3 ){gsub(n,"POINT")print $0;}' < file name


Cheers,
RangaSmilie

Last edited by rangarasan; 02-24-2012 at 03:28 AM..
# 7  
Old 02-24-2012
Code:
$ nawk -v n="LOCAL" 'gsub(n,"POINT",$0)1' input.txt 
%
10
%
NAME_1
NAME_2
NAME_3
NAME_4
%
POINT
%
02/02/12
%
08:00:00
%
YES
%

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Understanding awk 'expansion'

Heyas Recently i wanted to help someone with an awk script, but the end-script didnt work as expected. He wanted, if HOME was empty, to get the HOME of the current USER from /etc/passwd. At first i tried hardcoded with root: awk -F: '/^root/ {print $6}' /etc/passwd As that worked, i've... (4 Replies)
Discussion started by: sea
4 Replies

2. Shell Programming and Scripting

awk : Need Help in Understanding a command

Hello I am working on a Change request and Stuck at a point. The below awk command is used in the function. float_test ( ) { echo | awk 'END { exit ( !( '"$1"')); }' } I understand that awk 'END' is used to add one line at the end and exit is used to end the script with an error... (4 Replies)
Discussion started by: rahul2662
4 Replies

3. UNIX for Dummies Questions & Answers

Understanding awk

I found this on an awk site and would like to know what it does: /CARS/{x="";next} {if(x)print x;x=$0} END{if(x)print x}' Does it mean if it finds the word cars it skips that line and then prints the next one? (4 Replies)
Discussion started by: newbie2010
4 Replies

4. Shell Programming and Scripting

Help in Understanding awk if ( F ) syntax -

Hi Experts, I was looking at the below link, for finding words next to it, And unable to understand this syntax: Can any one please explain , what is meaning of this code: if ( F ) s = s ? s OFS $i : $i from:... (4 Replies)
Discussion started by: rveri
4 Replies

5. UNIX for Dummies Questions & Answers

Understanding / Modifying AWK command

Hey all, So I have an AWK command here awk '{if(FNR==NR) {arr++;next} if($0 in arr) { arr--; if (arr == 0) delete arr;next}{print $0 >"list2output.csv"}} END {for(i in arr){print i >"list1output.csv"}}' list1 list2 (refer to image for a more readable format) This code was submitted... (1 Reply)
Discussion started by: Aussiemick
1 Replies

6. UNIX for Advanced & Expert Users

understanding awk in this script

i am analyzing a query written by another developer ,need to understand part of script am looking at a code ..and it converts comma files to pipe delimited and also takes away quotes from any columns, source field format: 2510,"Debbie",NewYork changes to target: 2510|Debbie|NewYork ... (1 Reply)
Discussion started by: coolrock
1 Replies

7. UNIX for Dummies Questions & Answers

understanding part of an awk script

Hi I have an awk script running in ksh in which a section of code is picking out the datetime as follows: dia=`echo $starttime | nawk '{ printf "%02d\n", substr($1,9,2)}'` mes=`echo $starttime | nawk '{ printf "%02d\n", substr($1,6,2)}'` ano=`echo $starttime | nawk '{ printf "%02d\n",... (3 Replies)
Discussion started by: shajju
3 Replies

8. UNIX for Dummies Questions & Answers

Awk inside Awk expression

Hi, It can be used awk inside other Awk?. I need to get another text processing while other text process. Thank you. (2 Replies)
Discussion started by: pepeli30
2 Replies

9. Shell Programming and Scripting

Understanding Awk and Cat

Hi Guys, I was recently come across some code to hopefully learn a little bit about putting Shell commands into PHP application to run on a Linux server. However, I don't understand the command AT ALL... and was wondering if anyone can interpret it: cat userIDs.dat | awk '{s=s+1; if... (1 Reply)
Discussion started by: jordRiot
1 Replies

10. Shell Programming and Scripting

Need help on understanding the Shell and AWK scripts

Hello Friends, I am new to the scripting & have to analyze bunch of regular production scripts. It has .ksh which calls on the .awk script having many functions I need to understand and debug the scripts ASAP Can anybody please let me know as how can I debug, I want to see the flow of code... (3 Replies)
Discussion started by: amberj123
3 Replies
Login or Register to Ask a Question