Copying Text between two unique text patterns


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Copying Text between two unique text patterns
# 1  
Old 05-28-2007
Copying Text between two unique text patterns

Dear Colleagues:
I have .rtf files of a collection of newspaper articles. Each newspaper article starts with a variation of the phrase "Document * of 20" and is separated from the next article with the character string "==================="

I would like to be able to take the text composing each news article from between these two patterns and dump them into separate, uniquely named files. I've been playing around with SED, grep, cut and csplit, but nothing seems to be working. I have the regular expressions developed to capture the two lines "Document * of 20" and "--------" independently, but I can't figure out how to capture and play with the text between the two lines. I hope you can help.
Yours,
Simon J. Kiss
Queen's University
# 2  
Old 05-28-2007
Hi Simon,
Though there could some other smarter solution,I have used the following approach to solve this problem.

Assuming we have the contents of the file /tmp/MyNewArticleFile.rtf as ,

cat /tmp/MyNewArticleFile.rtf
HTML Code:
Times of India
Edition-1
Date:27 th May

Document 1 of 20

All blah blah goes here
Ad Page
Blah

================================

Document 2 of 20

All blah blah goes here
Ad Page
Blah

================================

Document 3 of 20

All blah blah goes here
Ad Page
Blah

================================
Document 4 of 20

All blah blah goes here
Ad Page
Blah

================================
End of the Edition
Thanks
Editor
I have written the following script that process the above file to generate the output.
Here the assumption is the Document has 20 Pages.
Code:
#!/bin/ksh
let page=1
while [[ page -le 20 ]] ; do
sed -n /Document\ $page/,/==========*/p /tmp/MyNewArticleFile.rtf > /tmp/ArticleSplitPage-$page
((page=page+1))
done

Upon execution of the above script i get 20 pages spilt according to the Document no.

cat /tmp/ArticleSpiltPage-1
HTML Code:
Document 1 of 20

All blah blah goes here
Ad Page
Blah

================================
Thanks,
Nagarajan Ganesan.
# 3  
Old 05-28-2007
Hi.

For the sample data file "data1":
Code:
Document * of 20
Hello

=====
Document one of 20

World

=====
Document 44 of 20

Now is

=====
Document "Climatology Review" in of 20

with no Documents at the beginning of the time.

=====

I ran this script:
Code:
#!/bin/sh

# @(#) s1       Demonstrate csplit.

F=${1-data1}

csplit -k -s -z $F "/^Document.*of/" {\*}

echo
for file in xx*
do
        echo
        echo "File: $file"
        head -3 $file |
        cat -n
done

exit 0

To produce this:
Code:
% ./s1


File: xx00
     1  Document * of 20
     2  Hello
     3

File: xx01
     1  Document one of 20
     2
     3  World

File: xx02
     1  Document 44 of 20
     2
     3  Now is

File: xx03
     1  Document "Climatology Review" in of 20
     2
     3  with no Documents at the beginning of the time.

This assumes that the lines "=====" are visual sugar ... cheers, drl
# 4  
Old 01-16-2009
Error How to grep the text between patterns

Hi
I am having a very small problem,but just cdnt find out the solution.

I am having a file which has multiple entries as :

<id>QIIC.QA</id>
<id>.AEX</id>
<id>QIIC</id>
..
I want the output as
QIIC.QA
.AEX
QIIC


And then check which pattern has been repeated and how many times?
Please Help.
Thanks.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to print unique text in field

I am trying to use awk to print the unique entries in $2 So in the example below there are 3 lines but 2 of the lines match in $2 so only one is used in the output. File.txt chr17:29667512-29667673 NF1:exon.1;NF1:exon.2;NF1:exon.38;NF1:exon.4;NF1:exon.46;NF1:exon.47 703.807... (5 Replies)
Discussion started by: cmccabe
5 Replies

2. Shell Programming and Scripting

Command for non-unique text

awk -F "" '/<TestName>|<testname>|<Offerer>|<offerer>|<Line1>|<line1>|<City>|<city>|<State>|<state>/ {print $2, $3}' OFS='\t' UBE3A.xml > UBE3A.txt Is it possible to use the code above to search for a pattern that is non-unique? For example, if I wanted to capture the<MethodList>|<string>... (6 Replies)
Discussion started by: cmccabe
6 Replies

3. Shell Programming and Scripting

Find patterns and filter the text

I need to filter the text in between two patterns and output that to a different file. Please help me how to do it. Ex: ............. <some random text> ............. Pattern_1 <Few lines that need to be output to different file> Pattern_2 ................ ............... <more text in... (4 Replies)
Discussion started by: metturr
4 Replies

4. Shell Programming and Scripting

Need to extract text repetitively between two patterns

Hi All, I want to extract the text between some pattern which occurs repeatedly in a file. For example my input is like, /home/..... ..........java:25: cannot find symbol ............ /home/...... /home/....... I want to display... (2 Replies)
Discussion started by: Vignesh58
2 Replies

5. Shell Programming and Scripting

Replacing text between two patterns

I would like to replace ], with ]]], between /* SECTION2-BEGIN */ and /* SECTION2-END */ in my file. My file contains the following information: /* SECTION1-BEGIN */ , /* SECTION1-END */ /* SECTION2-BEGIN */ , /* SECTION2-END */ /*... (5 Replies)
Discussion started by: azdps
5 Replies

6. UNIX for Dummies Questions & Answers

Copying text from Windows to AIX - missing text?

Hi All, I'm hoping this is an easy question, but I'm having a weird problem trying to simply copy and paste text from MS Windows (XP) Notepad and then pasting into vi or vim in AIX. When I type "oslevel" I get "5.3.0.0". The problem is that once the text is pasted, there are sections of text... (2 Replies)
Discussion started by: PlainInverted
2 Replies

7. UNIX for Advanced & Expert Users

Vi copying text

Is there a trick for copying from something like a powerpoint into vi? Every time I try to copy text from something like a powerpoint to vi my spacing gets messed up. I think it has something to do with my .vimrc file. When I renamed it was able to copy it in just fine so can someone please... (2 Replies)
Discussion started by: cokedude
2 Replies

8. Shell Programming and Scripting

Extracting several lines of text after a unique string

I'm attempting to write a script to identify users who have sudo access on a server. I only want to extract the ID's of the sudo users after a unique line of text. The list of sudo users goes to the EOF so I only need the script to start after the unique line of text. I already have a script to... (1 Reply)
Discussion started by: bouncer
1 Replies

9. Shell Programming and Scripting

Extracting Text Between Two Unique Lines

Hi all! Im trying to extract a portion of text from a file and put it into a new file. I need all the lines between <Placement> and </Placement> including the Placemark lines themselves. Is there a way to extract all instances of these and not just the first one found? I've tried using sed and... (4 Replies)
Discussion started by: Grizzly
4 Replies

10. Shell Programming and Scripting

extracting unique lines from text file

I have a file with 14million lines and I would like to extract all the unique lines from the file into another text file. For example: Contents of file1 happy sad smile happy funny sad I want to run a command against file one that only returns the unique lines (ie 1 line for happy... (3 Replies)
Discussion started by: soliberus
3 Replies
Login or Register to Ask a Question