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
# 1  
Old 08-15-2007
How to print specific lines with awk

Hi!

How can I print out a specific range of rows, like "cat file | awk NR==5,NR==9", but in the END-statement?

I have a small awk-script that finds specific rows in a file and saves the line number in an array, like this:


awk '
BEGIN { count=0}

/ZZZZ/ {
list[count]=NR
counter++
}

END {
print "Total of:" count " rows."
for (i in list) {
print "Row: " list[i] ## Here, also print the actual row with linenr:list[i].
}
}
' infile.txt





Any help would be much appreciated.
//Bugenhagen
# 2  
Old 08-15-2007
Code:
awk 'NR==5 || NR==9' "file"

if you want a range
Code:
awk 'NR>=5&&NR<=9' "file"


Last edited by ghostdog74; 08-15-2007 at 05:38 AM..
# 3  
Old 08-15-2007
try this one

I think this can help you. Suppose you want to print the line from MIN to MAX:

Code:
awk 'BEGIN{min=2;max=5}
{
 if (NR>=min)
{
if(NR<=max)
print
}
}' filename

# 4  
Old 08-15-2007
Print-outs in END

Hi!
Thank You for answering.

I need to do the print-out in the END-statement, when NR is already at the last row.

This is because my lineNr-array is quite large and every number is the begining of a group of rows that I need to print out.

So if the array is: "120,140,166,178, ..." , I would need to decide in END how many stanzas that will be printed to a file. After that, I will take the next group of stanzas and print them to a new file.

So is it possibe to do something like:

"set NR=list[i]; print"

//Bugenhagen
# 5  
Old 08-15-2007
my opinion

Hi, i think what you want is difficult to realize.

1>the NR has gone to the last line.
2>At the END module for awk, it has gone to the end of the file, so you can not re-hold the line of the file

So,my suggestion for you is:
1> try to remember all the desired rows in first awk
2>awk again
# 6  
Old 08-15-2007
Could you please post a sample input and output ? Smilie
# 7  
Old 08-16-2007
Sample

Hi!

Input file is from AIX/nmon.
(This is a cut-down version)
-----------------------------------------------------
AAA,progname,nmon_aix53# <-------Header starts here
AAA,command,/usr/local/bin/nmon_aix53 -f -t -s 10 -c 8640
AAA,version,v10r
AAA,build,AIX53
AAA,disks_per_line,150
BBBB,0026,hdisk31,unknown,Hitachi-HDS
BBBB,0027,hdisk32,unknown,Hitachi-HDS
BBBC,014,LV NAME LPs PPs DISTRIBUTION MOUNT POINT
BBBC,015,hd2 28 28 28..00..00..00..00 /usr
BBBP,2523,oslevel
ZZZZ,T0001,00:11:18,25-JUL-2007# <----------Body starts here
CPU01,T0001,32.9,19.0,11.7,36.5
CPU02,T0001,0.9,0.7,0.2,98.1
CPU03,T0001,53.3,10.5,5.6,30.6
CPU04,T0001,0.1,0.6,0.0,99.3
CPU05,T0001,31.2,5.1,0.7,63.1
ZZZZ,T0003,00:11:38,25-JUL-2007# <----------Next stanza in body
CPU01,T0003,44.3,4.3,0.6,50.8
CPU02,T0003,0.0,0.0,0.0,100.0
CPU03,T0003,45.2,0.0,0.0,54.8
CPU04,T0003,0.0,0.0,0.0,100.0
CPU05,T0003,19.7,0.0,0.0,80.3
BBBP,2524,ending vmstat -v# <----------------Footer starts here
BBBP,2525,ending vmstat -v," 20709370 memory pages"
BBBP,2526,ending vmstat -v," 19954046 lruable pages"
BBBP,2527,ending vmstat -v," 748541 free pages"
--------------------------------------------------------


So I would like to:
Put header in file1.
Put all stanzas (starting with ZZZZ) for a specific hour in file1.
Put footer in file1.

Next.
Put header in file2.
Put all stanzas for next hour in file2.
Put footer in file2.

Cont. until EOF.


//Br Bugenhagen
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