Visit Our UNIX and Linux User Community


Doubt in awk programing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Doubt in awk programing
# 1  
Old 03-03-2013
Doubt in awk programing

i wrote an awk progarm to calculate throughput from a ns2 trace file. i want this program to act on multiple trace files and it should display each output in a single output file can anyone please clear my doubt i tried with
Code:
awk -f awkscript inputfile1 inputfile2>outputfile

but it calculates the sum of all the throughputs and displaying

Last edited by joeyg; 03-03-2013 at 02:55 PM.. Reason: Please use CodeTags
# 2  
Old 03-03-2013
How about using a for loop?
Code:
for file in inputfile[1-2]
do
   awk -f awkscript "$file" >> outputfile
done

Or here is another example:
Code:
awk ' BEGIN {
        F = FILENAME
} F == FILENAME  {
        t += $0
} F != FILENAME {
        print t >> "outputfile"
        t = 0
        t += $0
} {
        F = FILENAME
} END {
        print t >> "outputfile"
} ' inputfile1 inputfile2

This User Gave Thanks to Yoda For This Post:
# 3  
Old 03-03-2013
@bipinajith: In the first example instead of >> file you could use done > file instead, then you do not need to append...
regarding the awk, FILENAME is not initialized in the BEGIN section and also there you do not need to append from within awk, but you can redirect stdout to a file.. You could also let FNR==1 mark the beginning of a new file.
# 4  
Old 03-03-2013
Quote:
Originally Posted by Scrutinizer
regarding the awk, FILENAME is not initialized in the BEGIN section
That is what I thought, but can you explain this?
Code:
$ awk ' BEGIN {
>         F = FILENAME
>         print F
> } ' inputfile1 inputfile2
inputfile1

# 5  
Old 03-03-2013
I just tried it with gawk, mawk and bwk, and I got:
Code:
$ awk ' BEGIN { F = FILENAME ; print F }' inputfile1 inputfile2

$

What version of awk are you using?
# 6  
Old 03-03-2013
Quote:
Originally Posted by Scrutinizer
I just tried it with gawk, mawk and bwk, and I got:
Code:
$ awk ' BEGIN { F = FILENAME ; print F }' inputfile1 inputfile2

$

What version of awk are you using?
You are correct about gawk.

But I tested this code in below awk version (OS: HP-UX)
Code:
$ what /usr/bin/awk
/usr/bin/awk:
        $Revision: 92453-07 linker linker crt0.o B.11.16.01 030415 $
         main.c $Date: 2008/05/19 14:40:42 $Revision: r11.23/3 PATCH_11.23 (PHCO_38267)
         lib.c $Date: 2007/02/23 16:15:06 $Revision: r11.23/2 PATCH_11.23 (PHCO_36053)
         run.c $Date: 2008/05/19 14:40:53 $Revision: r11.23/1 PATCH_11.23 (PHCO_38267)
         $Revision: @(#) awk R11.23_BL2008_0602_1 PATCH_11.23 PHCO_38267

And I do get the FILENAME printed in BEGIN block.
# 7  
Old 03-03-2013
Beside gawk, mawk and bwk, it also does not work with /usr/xpg4/bin/awk. So it may work on HPUX, but it should not be relied upon.. According to the POSIX specification:
Quote:
Inside a BEGIN action the value is undefined.
awk: Variables and Special Variables

Previous Thread | Next Thread
Test Your Knowledge in Computers #550
Difficulty: Medium
The string concatenation operator can sometimes be combined with non-string types; numerical types.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

a doubt in awk

instead of writing print command in awk, i saw in some posts that we can simply write a number before we end the awk command and it will print the file. As given below: $awk '{some manipulation; print}' filename $awk '{some manipulation}1' filename I also tried replacing the... (2 Replies)
Discussion started by: PranavEcstasy
2 Replies

2. Shell Programming and Scripting

Shell Programing with awk Tool

I'm working on a program in with shell programming and it needs to be able to delete the contents of files in the Home directory on certain days of the week.(like tuesday). Can anyone help me with this? Thanks in advance, Taffy. (7 Replies)
Discussion started by: Taffy
7 Replies

3. Shell Programming and Scripting

doubt on awk

I have executed the below command: find . -name "Ks*" -type f -exec ls -ltr {} \; | awk '{printf("%ld %s %d %s \n",$5,$6,$7,$8,$9)}' and here is the output: 1282 Oct 7 2004 51590 Jul 10 2006 921 Oct 7 2004 1389 Jun 4 2003 1037 May 19 2004 334 Mar 24 2004 672 Jul 8 2003 977... (6 Replies)
Discussion started by: venkatesht
6 Replies

4. Shell Programming and Scripting

doubt in awk

Hi , I have a file in the below format: 1.txt awk 'BEGIN { printf ("%1s", "man" )} ' awk 'BEGIN { printf ("%9s", "women" )} ' awk 'BEGIN { printf ("%56s", "human")} ' ## ### ## echo "$!" ## awk 'BEGIN { printf ("%1s", "aaa" )} ' awk 'BEGIN { printf ("%19s", "bbb" )} ' ... (4 Replies)
Discussion started by: jisha
4 Replies

5. Shell Programming and Scripting

Awk Programing (need help)

plx help to solve these problems?? 1. Create a HERE document which will edit multiple files in the same directory, using the ed editor. I give you 3 original files: file1.c , file2.c , file3.c, download them and change each string "stdio.h" to "STDIO.H" in these files. Note: when execute the... (1 Reply)
Discussion started by: SoCalledEngr
1 Replies

6. Shell Programming and Scripting

AWK doubt

Hello people I have a doubt about awk... Im using it to create a condition where I do not want to use the 0 (zero) value of a certain column. - This is the original file: string,number,date abc,0,20050101 def,1,20060101 ghi,2,20040101 jkl,12,20090101 mno,123,20020101... (2 Replies)
Discussion started by: Rafael.Buria
2 Replies

7. UNIX for Dummies Questions & Answers

doubt about awk

i have a file like this: awk.lst smith : sales : 1200 : 2 jones:it:25000 : 2 roger : it : 1500 : 2 ravi | acct | 15000 i have 3 doubts 1) when i say awk -F ":" '$2 ~ /'it'/ {print $0}' awk.lst i am not able to get jones in the ouput , is it because of space issue? 2)how to... (2 Replies)
Discussion started by: soujanya_srk
2 Replies

8. Shell Programming and Scripting

awk doubt

hi how to get the values in two columns (may be 2nd and 5th column) of a file line by line. either i want to get the two fields into different variables and use a for loop to get these values line by line. (3 Replies)
Discussion started by: Pradee
3 Replies

9. Shell Programming and Scripting

doubt in AWK

Hi all, column1 -------- 33 44 55 66 please provide the script using awk command to dispaly output 55. Help apperciated.. thanks, Nirmal (4 Replies)
Discussion started by: abnirmal
4 Replies

10. UNIX for Dummies Questions & Answers

awk doubt

I'm having a file with 5 fields. I want to sort that file according to one field no 3. How shall I do using awk programming. Any input appreciatable. regards, vadivel. (7 Replies)
Discussion started by: vadivel
7 Replies

Featured Tech Videos