# Reading RTF + Text File and pattern matching

**URL:** <https://www.ruby-forum.com/t/reading-rtf-text-file-and-pattern-matching/157513>\
**Category:** Ruby\
**Created:** [January 12, 2009, 2:27pm UTC](https://www.ruby-forum.com/t/reading-rtf-text-file-and-pattern-matching/157513 "2009-01-12T14:27:39Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![prince\_tambar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8dc957/32.png) [@prince\_tambar](https://www.ruby-forum.com/u/prince_tambar)\
**Post date:** [January 12, 2009, 2:27pm UTC](https://www.ruby-forum.com/t/reading-rtf-text-file-and-pattern-matching/157513/1 "2009-01-12T14:27:39Z")

</div>

Reading RTF and Text File in Ruby and Pattern Matching/searching from  
file and replacing with your data.

if you want to read RTF of Text file then u can take help from this code  
. Try out following solution.

filename =‘sukhitambar.rtf’  
targetfilename =‘princetambar.rtf’  
File.open(filename, ‘r’) do |f| # open file for reading  
lines = f.readlines # read into array of lines  
lines.each do |line| # traversing line by line  
line= line.gsub!(//, Date.today) # Pattern (  
 )  
or  
line= line.gsub!(/\<…\>/,data to be replaced)  
File.open(targetfilename, ‘a’) do |content| # opening new  
target file in append mode  
content.puts line # saving the line to another  
rtf file  
end  
end  
end

In the above code user can read data from Rich Text Format (RTF) file  
and search for some specific pattern and replace with his required  
data.and saved it to another RTF file. i hope this code will help for  
those whose want to read from RTF file and do pattern matching.

Thanks

By :-

Sukhwinder Singh Tambar

---

<div class="post-metadata">

**Author:** ![prince\_tambar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8dc957/32.png) [@prince\_tambar](https://www.ruby-forum.com/u/prince_tambar)\
**Post date:** [January 13, 2009, 10:41pm UTC](https://www.ruby-forum.com/t/reading-rtf-text-file-and-pattern-matching/157513/2 "2009-01-13T22:41:04Z")

</div>

Or, in little shorter way:

data = File.readlines(“test1.txt”) #read file into array  
data.map! {|line| line.gsub(/world/, “ruby”)} #invoke on each line gsub  
File.open(“test2.txt”, “a”) {|f| f.puts data} #output data to other file

Although I don’t understand, why would you want to append instead of  
write?

Sukhwinder Tambar wrote:

> Reading RTF and Text File in Ruby and Pattern Matching/searching from  
> file and replacing with your data…

---

<div class="post-metadata">

**Author:** ![prince\_tambar](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/8dc957/32.png) [@prince\_tambar](https://www.ruby-forum.com/u/prince_tambar)\
**Post date:** [January 15, 2009, 7:17am UTC](https://www.ruby-forum.com/t/reading-rtf-text-file-and-pattern-matching/157513/3 "2009-01-15T07:17:14Z")

</div>

Thanks Jarmo P. for the little way to do this. i am using append  
mode bcz i have lot of Pattern need to be replace with my date  
dynamically. so i open the file in append mode inside the loop.

One more thing. in text file gsub find the required pattern easily but  
while reading from RTF file we get the data in other way. so i did this

line= line.gsub!(//, Date.today)

i am agree with map you used.

bye the thank for shorter the code.
