Help with awk - read from file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with awk - read from file
# 1  
Old 04-25-2008
Help with awk - read from file

Hi,

I've got a file like the following:

Code:
Starting to process segment 0 (and symmetry related segments)
	Number of (cancelled) singularities: 0
	Number of (cancelled) negative numerators: 0
	Segment 0: 5.49secs
Starting to process segment 1 (and symmetry related segments)
	Number of (cancelled) singularities: 0
	Number of (cancelled) negative numerators: 0
	Segment 1: 10.01secs
Starting to process segment 2 (and symmetry related segments)
	Number of (cancelled) singularities: 0
	Number of (cancelled) negative numerators: 0
	Segment 2: 7.82secs
Starting to process segment 3 (and symmetry related segments)
	Number of (cancelled) singularities: 0
	Number of (cancelled) negative numerators: 0
	Segment 3: 5.31secs

... and I would like to extract the information about the time. I would like to read the file, save the time (of each line) to a variable, remove the suffix secs and then add it to the previous value. The result will be the total time....

I tried many things but none of them works... In case it helps, the last one I tried was

Code:
 
TIME="`awk '/Segment/ {print $3%secs + $TIME} ' log.txt`"

echo $TIME

It's a silly solution, but I think it may convey what I want to do....
I suspect that it has something to do with reading each line separetely, but I can't figure it out...

Thanks a lot in advance...
# 2  
Old 04-25-2008
this works for my:

awk -F":" '/Segment/ { print $2}' file.txt
5.49secs
10.01secs
7.82secs
5.31secs

pure shell:

grep Segment file.txt | cut -d: -f2
# 3  
Old 04-25-2008
Code:
awk -F:  '{ if(index($0,"Segment")>0){
            tot+=$2
            }
         }
         END {print tot }' file

# 4  
Old 04-25-2008
Try this:
Code:
awk '
/Segment/{match($3,".");t+=substr($3,RSTART)}
END{print "Totaltime :"t}
' file

Regards
# 5  
Old 04-25-2008
Even:

Code:
awk '/Segment/{t+=$3}END{print "Totaltime :"t}' file

Regards
# 6  
Old 04-25-2008
For adding the values, is it enough if you get the sum at the end? Then awk is all you need:

Code:
awk '/Segment/ { gsub("secs",""); time += $3 } END { print time }' file.txt

If you really genuinely want to loop over the cumulative times and do something which each in the shell, that would be something like

Code:
awk '/Segment/ { gsub ("secs",""); time += $3; print $3, time } file.txt |
while read THISTIME SUMTIME; do
  echo This time, we got $THISTIME
  echo Sum so far is $SUMTIME
done

The shell's arithmetic facilities are integer only, so you can't sum numbers with fractional parts in the shell itself. Getting awk to print both the current and the cumulative value for each line is a nice workaround for that (and a good opportunity to demonstrate how to read multiple values from the same line in the shell).
# 7  
Old 04-25-2008
I want to thank you all for you rapid response! All solutions are great! I really appreciate your effort!

@ era: I'm really impressed by your "sophisticated" solution!

Thanks again!!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Use while loop to read file and use ${file} for both filename input into awk and as string to print

I have files named with different prefixes. From each I want to extract the first line containing a specific string, and then print that line along with the prefix. I've tried to do this with a while loop, but instead of printing the prefix I print the first line of the file twice. Files:... (3 Replies)
Discussion started by: pathunkathunk
3 Replies

2. Shell Programming and Scripting

Read values from second file in awk

Hello Friends, I have written a script like the following, which finds some logs and fetchs some desired rows and then calculate average processing time of a spesific application. if then echo echo "----- There are three arguments which is expected to run this script! ... (5 Replies)
Discussion started by: EAGL€
5 Replies

3. UNIX for Advanced & Expert Users

Using awk to read a file and process

I am fairly green using awk so I don't have anything started but what I am trying to do is: I have a file called "contacts" and in the file are 3 fields separate by ;. I want to read each line and send an email script. I have the email function working but just need to know how to setup awk to... (8 Replies)
Discussion started by: ziggy6
8 Replies

4. Shell Programming and Scripting

Using awk instead of while loop to read file

Hello, I have a huge file, I am currently using while loop to read and do some calculation on it, but it is taking a lot of time. I want to use AWK to read and do those calculations. Please suggest. currently doing: cat input2 | while read var1 do num=`echo $var1 | awk... (6 Replies)
Discussion started by: anand2308
6 Replies

5. Shell Programming and Scripting

Help on awk to read xml file

Hello, I have a xml file as shown below. I want to parse the file and store data in variables. xml file looks like: <TEST NAME="DataBaseurl">jdbc:oracle:thin:@localhost:1521:ora10</TEST> <TEST NAME="Databaseuser">Pradeep</TEST> ...... and many other such lines i want to read this file and... (2 Replies)
Discussion started by: pradeepmacha
2 Replies

6. Shell Programming and Scripting

awk line to read file

OK, I want to read a textfile `base.txt` looking like this: MASTER SLAVE PERP_BASE /_\ DAYS /_\ DOPPLER x20080613 x20080829 123.3909 77 11.04877 x20080613 x20080909 -5.9504 88 -12.78454 x20080613... (2 Replies)
Discussion started by: friend
2 Replies

7. Shell Programming and Scripting

Read a file and search a value in another file create third file using AWK

Hi, I have two files with the format shown below. I need to read first field(value before comma) from file 1 and search for a record in file 2 that has the same value in the field "KEY=" and write the complete record of file 2 with corresponding field 2 of the first file in to result file. ... (11 Replies)
Discussion started by: King Kalyan
11 Replies

8. Shell Programming and Scripting

Need help with awk - how to read a content of a file from every file from file list

Hi Experts. I need to list the file and the filename comes from the file ListOfFile.txt. Basicly I have a filename "ListOfFile.txt" and it contain Example of ListOfFile.txt /home/Dave/Program/Tran1.P /home/Dave/Program/Tran2.P /home/Dave/Program/Tran3.P /home/Dave/Program/Tran4.P... (7 Replies)
Discussion started by: tanit
7 Replies

9. Shell Programming and Scripting

How to re-read a file in AWK

Hi , i am having some problem with re-reading the same file in AWK. here is the scenario. function 1 { some_string > " file1 " # i have redirected output to file1. ........... ........ } Now in function 2 { ... (1 Reply)
Discussion started by: madhaviece
1 Replies

10. Shell Programming and Scripting

File Read using awk

Hi, I need to read two colums(4th and 5th) from a file and do some manipulation Input file is 401500 IOC Q 14 14 406200 LC Q 1 1 410124 IOC Q 5 4 410124 LC Q 11 8 410132 IOC Q 230 229 410148 IOC Q ... (3 Replies)
Discussion started by: rejirajraghav
3 Replies
Login or Register to Ask a Question