How to print specific lines with awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to print specific lines with awk
# 8  
Old 08-16-2007
Code:
#! /opt/third-party/bin/perl

use strict;

my ($header, $i, $headerSet, %fileHash, $content, $trailer);

open(FILE, "<", "inputfile") || die "Unable to open file 'inputfile' <$!>\n";

while ( <FILE> ) {
  if ( $headerSet != 1 && !/^ZZZZ/ ) {
    $header .= $_;
  }
  elsif ( /^ZZZZ/ ) {
    $headerSet = 1;
    $fileHash{$i++} = $content if( length($content) );
    $content = "";
    $content .= $_;
  }
  elsif ( /^BBBP/ ) {
    $trailer .= $_;
  }
  else {
    $content .= $_;
  }
}
$fileHash{$i++} = $content;

close(FILE);

$fileHash{"header"} = $header;
$fileHash{"trailer"} = $trailer;

for( my $x=0; $x<$i; $x++ ) {
  open(FILE, ">", $x);
    print FILE $fileHash{"header"};
    print FILE $fileHash{$x};
    print FILE $fileHash{"trailer"};
  close(FILE);
}

exit 0

# 9  
Old 08-16-2007
NB: this only tested with your sample.
Code:
awk 'BEGIN{c=1}
     /^AAA.+nmon_aix53#/  {print > "file"c }
     /^ZZZZ/,/^BBBP.+ending vmstat -v#/{
        if ($0~/^BBBP/){c=c+1;print >"file"c;next}
	else {	print > "file"c}
     }  
' "file"

# 10  
Old 08-16-2007
Quote:
Originally Posted by ghostdog74
NB: this only tested with your sample.
Code:
awk 'BEGIN{c=1}
     /^AAA.+nmon_aix53#/  {print > "file"c }
     /^ZZZZ/,/^BBBP.+ending vmstat -v#/{
        if ($0~/^BBBP/){c=c+1;print >"file"c;next}
	else {	print > "file"c}
     }  
' "file"

I wonder how it worked actually.

This would not seperate the "ZZZZ" tags and footer will not be appended to the end.
Morever only first line from the header section would be appended.
# 11  
Old 08-16-2007
Holy Smoke!

Ok, Matrixmadhan, Your solution worked like a charm!

The only bad thing is that I have spent many days on this ....
Tried sed, awk.
Tried to understand lex/yacc.
Stupid, stupid me ...

Thanks a lot!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to print lines from a files with specific start and end patterns and pick only the last lines?

Hi, I need to print lines which are matching with start pattern "SELECT" and END PATTERN ";" and only select the last "select" statement including the ";" . I have attached sample input file and the desired input should be as: INPUT FORMAT: SELECT ABCD, DEFGH, DFGHJ, JKLMN, AXCVB,... (5 Replies)
Discussion started by: nani2019
5 Replies

2. Shell Programming and Scripting

How to print the specific lines?

I need to print specific lines 5,100,67,123 in a file. file name: today.csv (3 Replies)
Discussion started by: ramkumar15
3 Replies

3. Shell Programming and Scripting

How to print with awk specific field different from specific character?

Hello, i need help with awk. I have this file: cat number DirB port 67 er_enc_out 0 er_bad_os 0 DirB port 71 er_enc_out 56 er_bad_os 0 DirB port 74 er_enc_out 0 er_bad_os 0 DirB port 75 ... (4 Replies)
Discussion started by: elilmal
4 Replies

4. Shell Programming and Scripting

how to print specific lines or words

Hi, Please have a look on below records. STG_HCM_STATE_DIS_TAX_TBL.1207.Xfm: The value of the row is: EMPLID = 220677 COMPANY = 919 BALANCE_ID = 0 BALANCE_YEAR = 2012 STG_HCM_STATE_DIS_TAX_TBL.1207.Xfm: ORA-00001: unique constraint (SYSADM.PS_TAX_BALANCE) violated ... (4 Replies)
Discussion started by: Sachin Lakka
4 Replies

5. Shell Programming and Scripting

Print Specific lines when found specific character

Hello all, I have thousand file input like this: file1: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $$ | | | |$$ $$ UERT | TTYH | TAFE | FRFG |$$ $$______|______|________|______|$$ $$ | | | |$$ $$ 1 | DISK | TR1311 | 1 |$$ $$ 1 |... (4 Replies)
Discussion started by: attila
4 Replies

6. Shell Programming and Scripting

Problems to print specific lines with awk and grep...HELP!

Hi all I have data like this: model: 1, misfit value: 0.74987 1 1.182 1.735 2.056 1.867 2 0.503 1.843 2.018 1.888 3 2.706 2.952 2.979 1.882 4 8.015 3.414 3.675 1.874 ... (1 Reply)
Discussion started by: fedora2011
1 Replies

7. Shell Programming and Scripting

iterate through list of numbers and print specific lines with awk

Could someone please point me in the right direction with the following? I have a program that generates logs that contains sections like this: IMAGE INPUT 81 0 0.995 2449470 0 1726 368 1 0.0635 0.3291 82 0 1.001 2448013 0 1666 365 1 0.0649 ... (4 Replies)
Discussion started by: euval
4 Replies

8. Shell Programming and Scripting

print first few lines, then apply regex on a specific column to print results.

abc.dat tty cpu tin tout us sy wt id 0 0 7 3 19 71 extended device statistics r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device 0.0 133.2 0.0 682.9 0.0 1.0 0.0 7.2 0 79 c1t0d0 0.2 180.4 0.1 5471.2 3.0 2.8 16.4 15.6 15 52 aaaaaa1-xx I want to skip first 5 line... (4 Replies)
Discussion started by: kchinnam
4 Replies

9. Shell Programming and Scripting

Sed one-liner to print specific lines?

I need to print specific lines from a file, say 2-5, 8, 12-15, 17, 19, 21-27. How do I achieve this? (2 Replies)
Discussion started by: Ilja
2 Replies

10. Shell Programming and Scripting

print specific lines

I have a text file made of different blocks separated by blank lines. I need to print the blocks with odd indexes. How can I get it with awk? For example i need to print the first and the third block of a file like this: asgdg sadsd ssgsdgd ass uff fedd sddddso ieeduydd dddee deeo ssancnc... (4 Replies)
Discussion started by: littleboyblu
4 Replies
Login or Register to Ask a Question