Remove line breaks after a match


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove line breaks after a match
# 1  
Old 06-11-2012
Remove line breaks after a match

I need to remove all line breaks in a document after a match, until there is a blank line.

Example below, after the match "THE GREEN TABLE" remove line breaks until a blank line. Then, after the match "THE BLUE TABLE" do the same.

Before:

Code:
THE GREEN TABLE
Lorem ipsum dolor sit amet, consectetur adipiscing 
elit. Vestibulum consectetur, purus vitae sagittis 
vehicula, justo ipsum accumsan mi, in ornare risus 
turpis vel dolor. Aliquam in auctor nibh. Proin sit 
amet diam purus. Quisque suscipit, dui eu vehicula 
malesuada, tortor neque sagittis dolor, vel placerat 
lacus odio sed justo. 

THE BLUE TABLE
Cum sociis natoque penatibus et magnis dis parturient 
montes, nascetur ridiculus mus. Donec convallis hendrerit 
odio non sollicitudin. Vivamus condimentum consequat 
velit, ut volutpat mi tristique eget. Donec magna mi, 
tempor at posuere non, pulvinar quis tortor. Integer 
ornare vehicula enim, et gravida neque laoreet non.

After:

Code:
THE GREEN TABLE
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consectetur, purus vitae sagittis vehicula, justo ipsum accumsan mi, in ornare risus turpis vel dolor. Aliquam in auctor nibh. Proin sit amet diam purus. Quisque suscipit, dui eu vehicula malesuada, tortor neque sagittis dolor, vel placerat lacus odio sed justo. In nec justo neque. Pellentesque eget massa urna. 

THE BLUE TABLE
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec convallis hendrerit odio non sollicitudin. Vivamus condimentum consequat velit, ut volutpat mi tristique eget. Donec magna mi, tempor at posuere non, pulvinar quis tortor. Integer ornare vehicula enim, et gravida neque laoreet non. Donec diam tortor, pellentesque volutpat hendrerit ac, aliquam a diam.

A sed solution would be ideal, simply because I'm already using it, but awk or perl or whatever that does the job is fine. This is on a Linux server running Centos.

Last edited by Scrutinizer; 06-11-2012 at 09:24 AM.. Reason: code tags instead of quote tags
# 2  
Old 06-11-2012
Try:
Code:
perl -pe 's/^[[:upper:] ]+$/\n$&/||s/\n/ /;END{print "\n"}' file

# 3  
Old 06-11-2012
Code:
  perl -pe 's/^[[:upper:] ]+$/\n$&/||s/\n/ /;END{print "\n"}' file

The text to be matched with not always be upper case. How can I specify specific text to be matched?

Last edited by dockline; 06-11-2012 at 11:49 AM..
# 4  
Old 06-11-2012
Code:
perl -pe 's/^THE GREEN TABLE$/\n$&/||s/\n/ /;END{print "\n"}' file

# 5  
Old 06-11-2012
I'm using:
Code:
perl -pe 's/^THE GREEN TABLE$/\n$&/||s/\n/ /;END{print "\n"}' testfile.txt

However, the file testfile.txt appears unchanged.
# 6  
Old 06-11-2012
Try:
Code:
perl -pe 's/THE GREEN TABLE/\n$&/||s/\n/ /;END{print "\n"}' testfile.txt

# 7  
Old 06-11-2012
Getting closer. That removed the line breaks from the entire document, rather than just the line breaks after the match - "THE GREEN TABLE".
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove single-line breaks only in document

Regarding copy/pasted text of copyright-free book from archive.org (link below), in attempt to expand single-line-break paragraph text (not section headings or paragraph breaks) to wider right margin, Justify or Wrap in LIbreOffice is not working, and Find/Replace the paragraph mark ($) wraps all... (2 Replies)
Discussion started by: p1ne
2 Replies

2. UNIX for Beginners Questions & Answers

Remove line breaks and extra spaces

Hi, I want to remove all extra spaces, line breaks . Need a new line entry only for term starting"array" For eg: my input is array(), array(), array(), and my expected output is array(), array(), array(), Is it possible using awk? (5 Replies)
Discussion started by: rsi.245
5 Replies

3. Shell Programming and Scripting

[BASH] read 'line' issue with leading tabs and virtual line breaks

Heyas I'm trying to read/display a file its content and put borders around it (tui-cat / tui-cat -t(ypwriter). The typewriter-part is a 'bonus' but still has its own flaws, but thats for later. So in some way, i'm trying to rewrite cat using bash and other commands. But sadly it fails on... (2 Replies)
Discussion started by: sea
2 Replies

4. UNIX for Dummies Questions & Answers

Page breaks and line breaks

Hi All, Need an urgent solution to an issue . We have created a ksh file or shell script which generates 1 DAT file. the DAT file contains extract of a select statement . Now the issue is , when we are executing the ksh file , the output is coimng with page breaks and line breaks . We have... (4 Replies)
Discussion started by: Ayaskant
4 Replies

5. Shell Programming and Scripting

Awk-sed help : to remove first and last line with pattern match:

awk , sed Experts, I want to remove first and last line after pattern match "vg" : I am trying : # sed '1d;$d' works fine , but where the last line is not having vg entry it is deleting one line of data. - So it should check for the pattern vg if present , then it should delete the line ,... (5 Replies)
Discussion started by: rveri
5 Replies

6. Shell Programming and Scripting

Remove line breaks in csv file using shell script

Hi All, I've a csv file in which the record is getting break into 1 line or more than one line. I want to combine those splits into one line and remove the unwanted character existing in the record i.e. double quote symbol ("). The line gets break only when the record contains double... (4 Replies)
Discussion started by: rajak.net
4 Replies

7. Shell Programming and Scripting

remove non-alphabetic from a match line

Hey all, I want to remove non-alphabetic charecters from the line that have "Products from " for example a line like this: Products from LG (295) should just become like Products fromLG in the file, and then I would delete the remaining and it would be just "LG" tnx (9 Replies)
Discussion started by: Johanni
9 Replies

8. Shell Programming and Scripting

Piped input to sed 's/\n/ /' doesn't remove the line breaks..

Using ls input as example.. ls | sed 's/\n/ /'outputs with line breaks, where I was expecting the \n to disappear. I've tried \r as well wondering if terminal output used different breaks. Is there a way to remove the line breaks without saving to file and then working from there? ----------... (2 Replies)
Discussion started by: davidpbrown
2 Replies

9. Shell Programming and Scripting

any better way to remove line breaks

Hi, I got some log files which print the whole xml message in separate lines: e.g. 2008-10-01 14:21:44,561 INFO do something 2008-10-01 14:21:44,561 INFO print xml : <?xml version="1.0" encoding="UTF-8"?> <a> <b>my data</b> </a> 2008-10-01 14:21:44,563 INFO do something again I want... (3 Replies)
Discussion started by: csmklee
3 Replies

10. Shell Programming and Scripting

How to remove page breaks from a flat file???

Hi All, I get a flat file with its last field data splitting onto a new line.I got this program from Vgersh which when run would cancatenate the split data back to the end of the previous records.But this program fails when it encounters a page break between the split data and the previous... (5 Replies)
Discussion started by: kumarsaravana_s
5 Replies
Login or Register to Ask a Question