Extract information from file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extract information from file
# 8  
Old 11-10-2016
Robin,

I use to work with awk.

The code I try is the below.

Code:
awk '/0.5 /{if(s){print s;s=$NF+0}else{s=$NF+0}}
    /0.5/{s=s""$NF+0})
	END{print s}' input.txt

My OS is debian.

Tks
This User Gave Thanks to jiam912 For This Post:
# 9  
Old 11-11-2016
Please somebody can help me to solve this issue.
# 10  
Old 11-11-2016
I really, Really, REALLY would like to IF I only understood the problem.
This User Gave Thanks to RudiC For This Post:
# 11  
Old 11-11-2016
Quote:
Originally Posted by jiam912
Please somebody can help me to solve this issue.
Save as jiam912.pl
Run as perl jiam912.pl input

Code:
#!/usr/bin/perl
use strict;
use warnings;

my @id;
my %data;
my $set = 0;

while(<>) {
    unless (/^\d/) { ++$set; next }
    my ($id, @fields) = (split)[0..5];
    push @id, $id unless $set;
    for my $f (0..$#{fields}) {
        push @{$data{$id}[$f]}, $fields[$f];
    }
}

for my $t (0..4) {
    for my $i (@id) {
        my $p  = shift @{$data{$i}};
        print join (",", $i, @{$p})."\n";
    }
    print "\n";
}

Output:
Code:
0.5,0,0,0
1.0,0,0,0
1.5,0,0,0
2.0,0,0,0
2.5,0,0,0
3.0,0,0,0
3.5,0,0,0
4.0,0,0,0
4.5,0,0,0
5.0,0,0,0
5.5,3,3,3
6.0,2,1,1
6.5,-1,-1,-2
7.0,0,0,-1
7.5,-1,-2,-1
8.0,0,1,2
8.5,0,1,1
9.0,0,0,1
9.5,0,1,0
10.0,1,1,1
10.5,1,1,2
11.0,2,1,2
11.5,2,2,1
12.0,0,0,0

0.5,0,0,0
1.0,0,0,0
1.5,0,0,0
2.0,0,0,0
2.5,0,0,0
3.0,0,0,0
3.5,0,0,0
4.0,0,0,0
4.5,0,0,0
5.0,0,0,0
5.5,69,69,69
6.0,79,79,79
6.5,75,75,74
7.0,73,73,72
7.5,73,73,71
8.0,72,70,70
8.5,72,72,73
9.0,73,73,74
9.5,72,73,73
10.0,72,72,72
10.5,71,72,71
11.0,73,74,74
11.5,75,75,76
12.0,0,0,0

0.5,0,0,0
1.0,0,0,0
1.5,0,0,0
2.0,0,0,0
2.5,0,0,0
3.0,0,0,0
3.5,0,0,0
4.0,0,0,0
4.5,0,0,0
5.0,0,0,0
5.5,18,18,18
6.0,12,12,12
6.5,11,11,12
7.0,12,11,11
7.5,11,9,11
8.0,7,8,10
8.5,8,9,11
9.0,12,9,11
9.5,10,10,8
10.0,9,10,8
10.5,9,9,8
11.0,14,10,11
11.5,13,11,11
12.0,0,0,0

0.5,128,128,128
1.0,128,128,128
1.5,128,128,128
2.0,128,128,128
2.5,128,128,128
3.0,128,128,128
3.5,128,128,128
4.0,128,128,128
4.5,128,128,128
5.0,128,128,128
5.5,128,128,128
6.0,63,61,51
6.5,28,28,26
7.0,32,31,25
7.5,35,32,28
8.0,37,37,32
8.5,42,42,39
9.0,38,38,38
9.5,38,39,40
10.0,39,42,44
10.5,42,44,47
11.0,43,44,48
11.5,46,49,52
12.0,55,59,65

0.5,128,128,128
1.0,128,128,128
1.5,128,128,128
2.0,128,128,128
2.5,128,128,128
3.0,128,128,128
3.5,128,128,128
4.0,128,128,128
4.5,128,128,128
5.0,128,128,128
5.5,128,128,128
6.0,15,18,15
6.5,24,25,22
7.0,27,28,21
7.5,21,19,12
8.0,21,20,13
8.5,21,23,18
9.0,25,27,22
9.5,24,25,24
10.0,25,25,28
10.5,29,32,36
11.0,27,29,35
11.5,27,30,38
12.0,27,33,47

Use this one if you want to have a round down average.

Code:
#!/usr/bin/perl
use strict;
use warnings;

my @id;
my %data;
my $set = 0;

while(<>) {
    unless (/^\d/) { ++$set; next }
    my ($id, @fields) = (split)[0..5];
    push @id, $id unless $set;
    for my $f (0..$#{fields}) {
        push @{$data{$id}[$f]}, $fields[$f];
    }
}

for my $t (0..4) {
    for my $i (@id) {
        my $p  = shift @{$data{$i}};
        my $avg = avg(@{$p});
        printf "%s,%d\n", join (",", $i, @{$p}), $avg;
    }
    print "\n";
}

sub avg {
    my $total = 0;
    foreach (@_) {
        $total += $_;
    }
    return  $total/@_;
}


Last edited by Aia; 11-11-2016 at 11:50 PM..
These 2 Users Gave Thanks to Aia For This Post:
# 12  
Old 11-12-2016
Thanks, Thanks a lot Aia

It works fine.

Again thanks a lot.

---------- Post updated at 01:05 AM ---------- Previous update was at 01:03 AM ----------

It is there the option to get same output using AWK?

---------- Post updated at 01:06 AM ---------- Previous update was at 01:05 AM ----------

Dear RudiC,

Aia got the output using perl.. Can you please do the same with Awk..

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

awk script to extract transcript information from gff3 file

I need help to extract transcript information from gff3 file. Here is the input Chr01 JGI gene 82773 86941 . - . ID=Potri.001G000900;Name=Potri.001G000900 Chr01 JGI mRNA 82793 86530 . - . ID=PAC:27047814;Name=Potri.001G000900.1;pacid=27047814;longest=1;Parent=Potri.001G000900... (6 Replies)
Discussion started by: Maduranga
6 Replies

2. Shell Programming and Scripting

Extract information from file

In a particular directory, there can be 1000 files like below. filename is job901.ksh #!/bin/ksh cront -x << EOJ submit file=$PRODPATH/scripts/genReport.sh maxdelay=30 &node=xnode01 tname=job901 &pfile1=/prod/mldata/data/test1.dat ... (17 Replies)
Discussion started by: vedanta
17 Replies

3. Shell Programming and Scripting

Extract information from txt file

Hello! I need help :) I have a file like this: AA BC FG RF TT GH DD FF HH (a few number of rows and three columns) and I want to put the letters of each column in a variable step by step in order to give them as input in another script. So I would like to obtain: for the 1° loop:... (11 Replies)
Discussion started by: edekP
11 Replies

4. Shell Programming and Scripting

How to extract information from a file?

Hi, i have a file like this: <Iteration> <Iteration_iter-num>3</Iteration_iter-num> <Iteration_query-ID>lcl|3_0</Iteration_query-ID> <Iteration_query-def>G383C4U01EQA0A length=197</Iteration_query-def> <Iteration_query-len>197</Iteration_query-len> ... (9 Replies)
Discussion started by: the_simpsons
9 Replies

5. Shell Programming and Scripting

Extract various information from a log file

Hye ShamRock If you can help me with this difficult task for me then it will save my day Logs : ================================================================================================================== ... (4 Replies)
Discussion started by: SilvesterJ
4 Replies

6. Shell Programming and Scripting

extract information from a log file (last days)

I'm still new to bash script , I have a log file and I want to extract the items within the last 5 days . and also within the last 10 hours the log file is like this : it has 14000 items started from march 2002 to january 2003 awk '{print $4}' < *.log |uniq -c|sort -g|tail -10 but... (14 Replies)
Discussion started by: matarsak
14 Replies

7. Shell Programming and Scripting

Create shell script to extract unique information from one file to a new file.

Hi to all, I got this content/pattern from file http.log.20110808.gz mail1 httpd: Account Notice: close igchung@abc.com 2011/8/7 7:37:36 0:00:03 0 0 1 mail1 httpd: Account Information: login sastria9@abc.com proxy sid=gFp4DLm5HnU mail1 httpd: Account Notice: close sastria9@abc.com... (16 Replies)
Discussion started by: Mr_47
16 Replies

8. Shell Programming and Scripting

Extract information from Log file formatted

Good evening! Trying to make a shell script to parse log file and show only required information. log file has 44 fields and alot of lines, each columns separated by ":". log file is like: first_1:3:4:5:6:1:3:4:5:something:notinterested second_2:3:4:3:4:2 first_1:3:4:6:6:7:8 I am interested... (3 Replies)
Discussion started by: dummie55
3 Replies

9. Shell Programming and Scripting

extract and format information from a file

Hi, Following is sample portion of the file; <JDBCConnectionPool DriverName="oracle.jdbc.OracleDriver" MaxCapacity="10" Name="MyApp_DevPool" PasswordEncrypted="{3DES}7tXFH69Xg1c=" Properties="user=MYAPP_ADMIN" ShrinkingEnabled="false" ... (12 Replies)
Discussion started by: sujoy101
12 Replies

10. Shell Programming and Scripting

How to extract a piece of information from a huge file

Hello All, I need some assistance to extract a piece of information from a huge file. The file is like this one : database information ccccccccccccccccc ccccccccccccccccc ccccccccccccccccc ccccccccccccccccc os information cccccccccccccccccc cccccccccccccccccc... (2 Replies)
Discussion started by: Marcor
2 Replies
Login or Register to Ask a Question