Joining lines in a file - help!


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Joining lines in a file - help!
# 1  
Old 05-22-2012
Joining lines in a file - help!

I'm looking for a way to join lines in a file; e.,g consider the following
Code:
R|This is line 1
R|This is 
line 2
R|This is line 3
R|This is line 4
R|This is 
line 5

what i want to end up with is
Code:
R|This is line 1
R|This is line 2
R|This is line 3
R|This is line 4
R|This is line 5

so the 'real' lines start with R but there may be a line break in some of the lines therefore wanna get rid of the line break if the next line doesn't start with R|

make sense??
thanks in advance

PS been trying with sed and awk... but it's not very intuitive

Last edited by Franklin52; 05-22-2012 at 09:23 AM.. Reason: Please use code tags for data and code samples
# 2  
Old 05-22-2012
One way:
Code:
awk 'NR==1{printf $0;next}/^R/{print ""}{printf $0}' file

This User Gave Thanks to Franklin52 For This Post:
# 3  
Old 05-22-2012
nice... thank you very much

now i'll try and figure out how that works!!

---------- Post updated at 08:38 AM ---------- Previous update was at 07:57 AM ----------

I've been playing around with this a little and was trying to fix a problem; i.e. there should be a space where the newline has been merged

so instead of
Code:
R|This isline 5

I want
Code:
R|This is line 5

changing to this:
awk 'NR==1{printf $0;next}/^R/{print ""}{printf " "$0}' file4

nearly worked!

Last edited by Storms; 05-22-2012 at 11:14 AM..
# 4  
Old 05-22-2012
another way:-

Code:
gawk '/^R/&&s{print s ; s=""}{s=s$0}END{printf s}' file.txt


Code:
o/p
R|This is line 1
R|This is line 2
R|This is line 3
R|This is line 4
R|This is line 5


BR
SmilieSmilieSmilie
This User Gave Thanks to ahmad.diab For This Post:
# 5  
Old 05-22-2012
Quote:
Originally Posted by ahmad.diab
another way:-

Code:
gawk '/^R/&&s{print s ; s=""}{s=s$0}END{printf s}' file.txt


Code:
o/p
R|This is line 1
R|This is line 2
R|This is line 3
R|This is line 4
R|This is line 5


BR
SmilieSmilieSmilie
thanks, but that still leaves me the problem of spaces; so
Code:
R|This is 
Line1

changes to
Code:
R|This isLine1

but I want
Code:
R|This is Line1

any ideas??

I guyss I could use sed to do a substitution to put a space infront of every line that doesnt begin with R, that will solve it... but can anyone think of a neater way?
# 6  
Old 05-22-2012
I am not facing this problem as per the o/p you see , but modify code as below:-

Code:
gawk '/^R/&&s{print s ; s=""}{s=s" "$0}END{printf s}' file.txt

# 7  
Old 05-22-2012
Quote:
Originally Posted by ahmad.diab
I am not facing this problem as per the o/p you see , but modify code as below:-

Code:
gawk '/^R/&&s{print s ; s=""}{s=s" "$0}END{printf s}' file.txt

I tried that... but that also gives a space at the beginning of the line
i.e.
. R|This is Line1
instead of
R|This is Line1
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Joining especific lines in "2n" lines file

Hi to everybody. I have a "2n" lines file. I would like to create a new file with only "n" lines, each line in the new file formed by the proper odd line of the old file joined with the following even line (separated by a space) of the old file. I'd prefer using sed or bash. -example-... (5 Replies)
Discussion started by: felino
5 Replies

2. Shell Programming and Scripting

Issue in Concatenation/Joining of lines in a dynamically generated file

Hi, I have a file containing many records delimited by pipe (|). Each record should contain 17 columnns/fields. there are some fields having fields less than 17.So i am extracting those records to a file using the below command awk 'BEGIN {FS="|"} NF !=17 {print}' feedfile.txt... (8 Replies)
Discussion started by: TomG
8 Replies

3. Shell Programming and Scripting

Joining lines in TXT file based on first character

Hi, I have a pipe delimeted text file where lines have been split over 2 lines and I need to join them back together. For example the file I have is similar to the following: aaa|bbb |ccc ddd|eee fff|ggg |hhh I ideally need to have it looking like the following aaa|bbb|ccc ddd|eee... (5 Replies)
Discussion started by: fuji_s
5 Replies

4. Shell Programming and Scripting

joining multi-line file into single lines

Hi, I have a file like mentioned below..For each specific id starting with > I want to join the sequence in multiple lines to a single line..Is there a simple way in awk or sed to do this >ENST00000558922 cdna:KNOWN TCCAGGATCCAGCCTCCCGATCACCGCGCTAGTCCTCGCCCTGCCTGGGCTTCCCCAGAG... (2 Replies)
Discussion started by: Diya123
2 Replies

5. Shell Programming and Scripting

bash - joining lines in a file

I’m writing a bash shell script and I want to join lines together where two variables on each line are the same ie. 12345variablestuff43212morevariablestuff 12345variablestuff43212morevariablestuff 34657variablestuff78945morevariablestuff 34657variablestuff78945morevariablestuff... (12 Replies)
Discussion started by: Cultcha
12 Replies

6. Shell Programming and Scripting

Joining lines in a text file using AWK or SED

Hi All I'm struggling a bit here :( I need a way of joining lines contained in a text file. I've seen numerous SED and AWK examples and none of them seem to be working for me. The text file has 4 lines: DELL1427 DOC 30189342 79 Now bear with me on this one as I'm actually... (4 Replies)
Discussion started by: huskie69
4 Replies

7. UNIX for Dummies Questions & Answers

JOINING MULTIPLE LINES IN A TEXT FILE USING GAWK

sir... am having a data file of customer master., containing some important fields as a set one line after another., what i want is to have one set of these fields(rows) one after another in line.........then the second set... and so on... till the last set completed. I WANT THE DATA... (0 Replies)
Discussion started by: KANNI786
0 Replies

8. UNIX for Dummies Questions & Answers

Joining lines of a text file using GAWK

sir... am having a data file of customer master., containing some important fields as a set one line after another., what i want is to have one set of these fields(rows) one after another in line.........then the second set... and so on... till the last set completed. ... (0 Replies)
Discussion started by: KANNI786
0 Replies

9. Shell Programming and Scripting

Joining 2 lines in a file together

Hi guys, I've got a log file which has entries that look like this: ------------------------------------------------------------------------------- 06/08/04 07:57:57 AMQ9002: Channel program started. EXPLANATION: Channel program 'INSCCPQ1.HSMTSPQ1' started. ACTION: None. ... (3 Replies)
Discussion started by: m223464
3 Replies

10. Shell Programming and Scripting

Joining lines in log file

Hi, I need to develop a script to join multiple three lines in a log file into one line for processing with awk and grep. I looked at tr with no success. The first line contains the date time information. The second line contains the error line. The third line is a blank line. Thanks, Mike (3 Replies)
Discussion started by: bubba112557
3 Replies
Login or Register to Ask a Question