Joining broken lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Joining broken lines
# 1  
Old 06-22-2011
Power Joining broken lines

I have a plain test file with a delimeter '[|]'. In this file some lines are broken into two. The first part of these broken line will have 6 columns and the second part will have 4. These broken lines will be consicutive.
I want to join the two consicutive lines which are having 6 fields and 4 fields respectively. A perfect line will have 12 fields and each perfect line will end with '{}' even the second half of the broken line will have the '{}'

example
of a broken line
Code:
1[|]2[|]3[|]4[|]5[|]6[|]7
[|]a[|]b[|]c[|]d{}


a correct line
Code:
1[|]2[|]3[|]4[|]5[|]6[|]7[|]a[|]b[|]c[|]d{}

Can any one please help me to sort this out..


Last edited by radoulov; 06-22-2011 at 07:53 AM.. Reason: Code tags.
# 2  
Old 06-22-2011
If {} marks the end of line, try this

Code:
 
perl -0lne 's/\n//g;print "$1\n" while /(.*?{})/g' input file.

This User Gave Thanks to getmmg For This Post:
# 3  
Old 06-22-2011
Thanks a lot... It worked,Can you please explains each part of the code if you are not too busy...

---------- Post updated at 06:05 AM ---------- Previous update was at 06:04 AM ----------

Also it would be great if there is a way to join trhe lines by checking the delemeter count..
# 4  
Old 06-22-2011
tr -d '\n' < /yourfile
# 5  
Old 06-22-2011
Code:
 -0lne

reads the whole file.
Code:
s/\n//g

replaces all new line charecters and makes it into a single line.

Code:
print "$1\n" while /(.*?{})/g'

this will try to do a minimalistic pattern match for any chars that ends with {} and it is printed.
While loop makes sure to print everything.

---------- Post updated at 05:17 PM ---------- Previous update was at 05:00 PM ----------

Another approach to make sure the no of colums are also matching.
I have tried to match 10 cols here. Change it as per your requirement.

Code:
 
perl -0lne 's/\n//g;print "$1\n" while /((\w+\[\|\]){10}\w+{})/g' input

This User Gave Thanks to getmmg For This Post:
# 6  
Old 06-22-2011
Also when i redirect the file the file with the below command
"perl -0lne 's/\n//g;print "$1\n" while /(.*?{})/g' inputfile>abc.txt"

it creates a binary file. When i do a head on this file it is displaying the file correctly , but in vi I can see a '^@' charecter on each line from the second line. any reason for this..
# 7  
Old 06-22-2011
Not sure why. For me its looks fine.
Ouput file is also Ascii text not a binary.

Whats your OS btw?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Joining broken lines and removing empty lines

Hi - I have req to join broken lines and remove empty lines but should NOT be in one line. It has to be as is line by line. The challenge here is there is no end of line/start of line char. thanks in advance Source:- 2003-04-34024|04-10-2003|Claims|Claim|01-13-2003|Air Bag:Driver;... (7 Replies)
Discussion started by: Jackceasar123
7 Replies

2. Shell Programming and Scripting

Joining lines in different way

Hi all, I'm excited to the part of unix.com forum, and noob to it. I have an query, where I have an file and it contains data like this use thread when posting do no I was expecting the result as use thread thread when when posting posting do do no use thread when thread when... (6 Replies)
Discussion started by: Jose Nirmal
6 Replies

3. Shell Programming and Scripting

Joining broken lines with awk or perl

Hi, I have a huge file with sql broken statements like: PP3697HB @@@@0 <<<<<<Record has been deleted as per PP3697HB>>>>>> FROM sys.xtab_ref rc,sys.xtab_sys f,sys.domp ur WHE RE rc.milf = ur.milf AND rc.molf = f.molf AND ur.dept = 'SWIT'AND ur .department = 'IND' AND share = '2' AND... (4 Replies)
Discussion started by: som.nitk
4 Replies

4. Shell Programming and Scripting

awk joining lines

Hello, I'm trying to write a piece of code in awk, which should be able recognize by some regexps two lines and then join them together (maybe write them without \n would be enough, I don't know).. the thing is that every line in the file i'm working with starts with some number, for example: ... (4 Replies)
Discussion started by: midin
4 Replies

5. Shell Programming and Scripting

pattern matching lines using the date, and then joining the lines

Hi Guys, Was trying to attempt the below using awk and sed, have no luck so far, so any help would be appreciated. Current Text File: The first line has got an "\n", and the second line has got spaces/tabs then the word and "\n" TIME SERVER/CLIENT TEXT... (6 Replies)
Discussion started by: eo29
6 Replies

6. Shell Programming and Scripting

Need help joining lines

Hi All, I need the command to join 2 lines into one. I found lots of threads but none give me the sollution. Probably because unix scripting is one of my best features ;) I got a logfile where line 2 needs to be joined with line 1, lines 4 needs to be joined with line 3 etc If you need... (16 Replies)
Discussion started by: rene21976
16 Replies

7. Shell Programming and Scripting

joining two lines

Hi , I want to join two lines in a file, where the second line contain query string. if it doesn't contain that string i don't want to join e.g. Input file is as following: name fame game none none none name fame game cat eat mice I need output file as name fame game none none... (2 Replies)
Discussion started by: ashrafonics
2 Replies

8. Shell Programming and Scripting

joining 2 lines into single one

i have a script that joins 2 lines of a file into one line and again next 2 line into one line. if number of line is 4 then after joining it should be 2 lines in a file my file a1.txt has some of the below lines 1-GH32X, CC, AMR, Number of Intervals Not Inserted: 1 / 95 1-150KP1, CC,... (3 Replies)
Discussion started by: ali560045
3 Replies

9. Shell Programming and Scripting

Joining 3 lines at a time

Hi, I have a file which has the contents as below : 07:38:36 EST date 20041117 07:39:06 EST 07:00:29 EDT date 20050504 07:25:16 EDT 07:00:40 EDT date 20050505 07:23:12 EDT I need to delete the new line character from all lines except 3rd,6th,9th etc. lines so that i get the output... (14 Replies)
Discussion started by: Sabari Nath S
14 Replies

10. 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
Login or Register to Ask a Question