sed / awk to concatenate lines until blank line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed / awk to concatenate lines until blank line
# 1  
Old 03-29-2009
sed / awk to concatenate lines until blank line

Sample input (line feed indicated by [LF])
---------------
The red fox jumped [LF]
over the brown fence of the [LF]
red hous [LF]
[LF]
[LF]
[LF]
He then went into the[LF]
orchard[LF]
[LF]

---------------
Desired Output
---------------
The red fox jumped over the brown fence of the red house
[LF]
He then went into the orchard
[LF]


any input on a sed/awk one liner to achieve this would be immensely helpful
# 2  
Old 03-29-2009
Code:
awk  'BEGIN { RS = ""; OFS = " "}
            {$1 = $1; print }'

# 3  
Old 03-30-2009
perl:

Code:
undef $/;
open $fh,"<","a.pl";
my $str=<$fh>;
my @arr=split(/\n\n+/,$str);
map {my $t=$_; $t=~s/\n/ /g; print $t,"\n\n";} @arr;

sed:

Code:
sed -n '/^$/ !{
	1{
	h
	}
	1 !{
	H
	}
}
/^$/ {
 x
 /^$/ !{
 	s/\n//g
 	p
 	x
 	p
 	x
 	d
 }
}
${
	x
	/^$/ !{
	 s/\n//g
   p
   d
  }
}' a


Last edited by summer_cherry; 03-30-2009 at 12:29 AM..
# 4  
Old 03-30-2009
cfajohnson, your solution removed all the blank lines......
summer_cherry: I tried playing around with your solution. It came closest to what I am looking for, but I guess my requirements are a little more complicated and I didn't outline them correctly before.

Here's what I have done so far
1> remove all blank lines using sed -e 's/^$//g' file.txt > file1.txt

2> Now I have file in the following format (delimiter indicated by DL, Line Feed by LF)
------------------------
Sample Input
------------------------
[DL]
The fox jumped over the red[LF]
fence into[LF]
the orchard to eat some[LF]
grapes[LF]
[DL]
Then it came back to the[LF]
yard to hunt some[LF]
sheep[LF]
[DL]
The farmer chased[LF]
the fox away[LF]

---------------------
Expected Output
---------------------
[DL]
The fox jumped over the red fence into the orchard to eat some grapes
[DL]
Then it came back to the yard to hunt some sheep
[DL]
The farmer chased the fox away
# 5  
Old 03-30-2009
I am also trying to achieve this output, but I have failed with various sed solutions that I have tried.
-------------------------
SAMPLE INPUT
-------------------------
Name: ABCD
Address: ABCD Road, ABCD City, ABCD State
ZipCode: 0000
Telno: 999-999-9999

Name: EFGH
Address Temp Road, Temp City, Temp State
Telno 999-999-9999

----------------------
EXPECTED OUTPUT
----------------------

Name: ABCD
Address: ABCD Road, ABCD City, ABCD State
ZipCode: 0000
Telno: 999-999-9999

Name: EFGH
Address Temp Road, Temp City, Temp State
ZipCode: <--- This is the new entry
Telno 999-999-9999

Basically, the requirement is to insert a word between two words if the word does not already exist.
# 6  
Old 03-30-2009
Quote:
Originally Posted by dunstonrocks
I am also trying to achieve this output, but I have failed with various sed solutions that I have tried.
-------------------------
SAMPLE INPUT
-------------------------
Name: ABCD
Address: ABCD Road, ABCD City, ABCD State
ZipCode: 0000
Telno: 999-999-9999

Name: EFGH
Address Temp Road, Temp City, Temp State
Telno 999-999-9999

----------------------
EXPECTED OUTPUT
----------------------

Name: ABCD
Address: ABCD Road, ABCD City, ABCD State
ZipCode: 0000
Telno: 999-999-9999

Name: EFGH
Address Temp Road, Temp City, Temp State
ZipCode: <--- This is the new entry
Telno 999-999-9999

Basically, the requirement is to insert a word between two words if the word does not already exist.
Suppose you want to insert the text for the name EFGH:

Code:
awk '/EFGH/{print;getline;print;print "Zipcode:..";next}1'

Regards
# 7  
Old 03-30-2009
No, I don't know for which record I would need to insert the missing field.

I know the order of fields in a record.
So if any field is missing in a record, insert it at an appropriate place in that record.
Do the same for all records.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

String search and print next all lines in one line until blank line

Dear all I want to search special string in file and then print next all line in one line until blank lines come. Help me plz for same. My input file and desire op file is as under. i/p file: A1/EXT "BSCABD1_21233G1" 757 130823 1157 RADIO X-CEIVER ADMINISTRATION BTS EXTERNAL FAULT ... (7 Replies)
Discussion started by: jaydeep_sadaria
7 Replies

2. Shell Programming and Scripting

Awk, sed - concatenate lines starting with string

I have a file that looks like this: John Smith http://www.profile1.com http://www.profile2.com http://www.profile3.com Marc Olsen http://www.profile4.com http://www.profile5.com http://www.profile6.com http://www.profile7.com Lynne Doe http://www.profile8.com http://www.profile9.com... (3 Replies)
Discussion started by: locoroco
3 Replies

3. Shell Programming and Scripting

awk or sed - Convert 2 lines to 1 line

Hi, Just trying to get to grips with sed and awk for some reporting for work and I need some assistance: I have a file that lists policy names on the first line and then on the second line whether the policy is active or not. Policy Name: Policy1 Active: yes Policy... (8 Replies)
Discussion started by: guinch
8 Replies

4. Shell Programming and Scripting

sed or awk delete character in the lines before and after the matching line

Sample file: This is line one, this is another line, this is the PRIMARY INDEX line l ; This is another line The command should find the line with “PRIMARY INDEX” and remove the last character from the line preceding it (in this case , comma) and remove the first character from the line... (5 Replies)
Discussion started by: KC_Rules
5 Replies

5. Shell Programming and Scripting

sed show lines text between 2 blank lines

I have a file like blah blah blah blah this is the text I need, which might be between 1-4 lines, but always has a blank line above and below it, and is at the end of the text file the code tags don't show the trailing blank line. I started by deleting the last blank line with: ... (2 Replies)
Discussion started by: unclecameron
2 Replies

6. Shell Programming and Scripting

Logfile - extracting certain lines to concatenate into 1 line

I've got a log file from automatic diagnostic runs. The log file is appended to each time an automatic log is run. I'd like to just pull certain lines from each run in the log file, and concatenate them into 1 comma delimited line (for export into excel or an html table). Each diagnostic run... (3 Replies)
Discussion started by: BecTech
3 Replies

7. UNIX for Advanced & Expert Users

need to concatenate two lines if the line doesnt end with quotes

Hi I am getting a source file where the columns are seperated by comma and double Quotes Eg1 : "AAA","BBB","CCCC" in the same source file i am also getting few lines where my last columns double quotes are ending in its next line or the next next line Eg2: "AAA","BBB","CCC CC"... (9 Replies)
Discussion started by: laxmi131
9 Replies

8. Shell Programming and Scripting

sed and blank lines

hello, i have tried to remove blank lines from a file using korn shell script file.. it doesn't seem to work! i tried sed '/^\s*$/d' infile > outfile but that didn't work i tried sed 's/ *$//;/^$/d' infile > outfile and that didn't work i tried sed '/^s./d' infile > outfile and that... (6 Replies)
Discussion started by: alrinno
6 Replies

9. Shell Programming and Scripting

concatenate and display 2 lines as 1 with a condition for 2 line ?

I have 2 pattern of lines (SQL query and Time taken)in a log i need to capture all SQL queries with time taken >20 sec and need to display as one line. 2 lines from log: 2007-10-23 11:39:17,061 DEBUG - SQL Query : SELECT A.GROUP_CD , C.FN_CD FROM UP_GROUP A , PRD_GROUP_TO_FN B , PRD_FN... (7 Replies)
Discussion started by: vithala
7 Replies

10. UNIX for Advanced & Expert Users

Need solution concatenate and display 2 lines as 1 with a condition for 2 line ?

I have 2 pattern of lines (SQL query and Time taken)in a log i need to capture all SQL queries with time taken >20 sec and need to display as one line. 2 lines from log: 2007-10-23 11:39:17,061 DEBUG - SQL Query : SELECT A.GROUP_CD , C.FN_CD FROM UP_GROUP A , PRD_GROUP_TO_FN B , PRD_FN... (1 Reply)
Discussion started by: vithala
1 Replies
Login or Register to Ask a Question