Print specific pattern line in c++


 
Thread Tools Search this Thread
Top Forums Programming Print specific pattern line in c++
# 8  
Old 07-06-2011
It reads a line every loop, but never prints anything unless it finds @HWI. When it does, it prints both that line (after subbing # for @) and the line after it (by reading and immediately printing another line).

So any lines that aren't @HWI or don't immediately follow @HWI get read but not printed.
# 9  
Old 07-06-2011
Many thanks for explanation in detail.
I'm still need time to 'digest' it Smilie
Will ask your experience once got problem.
Thanks first.
# 10  
Old 07-06-2011
From 'man fgets' :

Quote:
gets() and fgets() return s on success, and NULL on error or when end of file occurs while no characters have been read.

Code:
   while(fgets(buf, 4096, fin)) //keep reading line-by-line into buffer
       {
               if(strncmp(buf, "@HWI", 4) == 0) //if buffer starts with '@HWI' 
               {
                       buf[0]='#';  //set the first char to '#'
                       fputs(buf, fout);   //and print the whole line
                       if(fgets(buf, 4096, fin) == NULL) continue;   //read next line; check for failure or eof
                       fputs(buf, fout);  //print the line 
               }
       }

This piece of code calls fputs() twice -- once it prints the modified '@HWI' line and the second time it prints the next line after. Then, the loop gets in next iteration and keeps reading in lines, until while condition is satisfied, that is, until '@HWI' is encountered. The third and fourth line in your input get lost in the while iterations, not in the if test.

@Corona: Any particular reason why you chose to use buffer of size 4096?
This User Gave Thanks to mirni For This Post:
# 11  
Old 07-07-2011
Quote:
Originally Posted by mirni
@Corona: Any particular reason why you chose to use buffer of size 4096?
Not really. 4096 is just a "nice round number" in computing terms, a power of two, and plenty long enough for most text lines. 'most' may not mean yours, adjust to taste. Anything under a couple of megs in size will work. If you need really large buffers you have to make them with malloc:

Code:
unsigned long size=(1024L*1024L*64L); // 64 megabytes
char *buf=malloc(size);

You use buf the same way as you would a stack var like char buf[64]; since an array and a pointer amount to the same thing in the end, as far as the processor's concerned -- a starting point in memory.
These 2 Users Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell Scripting , need to search and print a line that contains a specific pattern

Take example of below file. abc.txt nas1:/abc/test/test1 /test nas1:/abc/test/test1/test2 /test/abc nas1:/abc/test/ Now i have a variable that contains "nas1:/abc/test/test1" value , so i need to search the above file for this variable and print only this line. ... (14 Replies)
Discussion started by: mohit_vardhani
14 Replies

2. Shell Programming and Scripting

Print all lines between two keyword if a specific pattern exist

I have input file as below I need to check for a pattern and if it is there in file then I need to print all the lines below BEGIN and END keyword. Could you please help me how to get this in AIX using sed or awk. Input file: ABC ******** BEGIN ***** My name is Amit. I am learning unix.... (8 Replies)
Discussion started by: Amit Joshi
8 Replies

3. Shell Programming and Scripting

Help with print out record if first and next line follow specific pattern

Input file: pattern1 100 250 US pattern2 50 3050 UK pattern3 100 250 US pattern1 70 1050 UK pattern1 170 450 Mal pattern2 40 750 UK . . Desired Output file: pattern1 100 250 US pattern2 50 3050 UK pattern1 170 450 Mal pattern2... (3 Replies)
Discussion started by: cpp_beginner
3 Replies

4. Shell Programming and Scripting

Match Pattern and print pattern and multiple lines into one line

Hello Experts , require help . See below output: File inputs ------------------------------------------ Server Host = mike id rl images allocated last updated density vimages expiration last read <------- STATUS ------->... (4 Replies)
Discussion started by: tigerhills
4 Replies

5. Shell Programming and Scripting

Print only next pattern in a line after a pattern match

I have 2013-06-11 23:55:14 1Umexd-0004cm-IG <= user@domain.com I need sed/awk operation on this, so that it should print the very next pattern only after the the pattern mach <= ie only print user@domain.com (7 Replies)
Discussion started by: anil510
7 Replies

6. Shell Programming and Scripting

awk to print record not equal specific pattern

how to use "awk" to print any record has pattern not equal ? for example my file has 5 records & I need to get all lines which $1=10 or 20 , $2=10 or 20 and $3 greater than "130302" as it shown : 10 20 1303252348212B030 20 10 1303242348212B030 40 34 1303252348212B030 10 20 ... (14 Replies)
Discussion started by: arm
14 Replies

7. Shell Programming and Scripting

Script to compare pattern and print a different pattern in each line

Hi, I am writing a shell script to parse some files, and gather data. The data in the files is displayed as below. .......xyz: abz: ......qrt: .... .......xyz: abz: ......qrt: ... I have tried using awk and cut, but the position of these values keep changing, so I wasn't able to get... (2 Replies)
Discussion started by: Serena
2 Replies

8. UNIX for Dummies Questions & Answers

How to Detect Specific Pattern and Print the Specific String after It?

I'm still beginner and maybe someone can help me. I have this input: the great warrior a, b, c and what i want to know is, with awk, how can i detect the string with 'warrior' string on it and print the a, b, and c seperately, become like this : Warrior Type a b c Im still very... (3 Replies)
Discussion started by: radynaraya
3 Replies

9. Shell Programming and Scripting

Print out specific pattern column data

Input file: adc_0123 haa_1000 bcc_520 adc_0150 bcc_290 adc_0112 haa_8000 adc_0139 haa_7000 Output file: adc_0123 adc_0123 haa_1000 bcc_520 adc_0150 adc_0150 bcc_290 (3 Replies)
Discussion started by: patrick87
3 Replies

10. Shell Programming and Scripting

Print rows, having pattern in specific column...

Hello all, :) I have a pattern file some what like this, cd003 cd005 cd007 cd008 and input file like this, abc cd001 cd002 zca bca cd002 cd003 cza cba cd003 cd004 zca bac cd004 cd005 zac cba cd005 cd006 acz acb cd006 cd007 caz cab cd007 ... (25 Replies)
Discussion started by: admax
25 Replies
Login or Register to Ask a Question