Merging 2 lines together


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Merging 2 lines together
# 1  
Old 04-16-2013
Merging 2 lines together

I have a small problem, which due to my lack of knowledge, has left me unable to decipher some of the solutions that I looked at on these forums.

So below is a piece of text, which I ran via cat -vet, which comes from within a program file. I have many such programs to process and repeatable, hence why I am looking to sort it out once and for all Smilie

Code:
DEFINE NEW GLOBAL SHARED VARIABLE http-newline AS char NO-UNDO$
    INITIAL "~^M~$
".$

The problem is as follows. I wish to be able to remove the CTRL-M from within the
Code:
<B>"~^M~</B>

and bring the following line onto the same line as the
Code:
~^"M~

. So in effect the
Code:
"~^M~

becomes
Code:
"~~"

There could be multiple instances within the same program/text.

At the moment I have used perl to find the ~^M~ to remove the CTRL-M, as below.

Code:
perl -pi -e 's/\~\r\~/~~/gi' ProgramText.p

I have searched for
Code:
~^M~

to reduce the chance of a false match. I appreciate that some of the switches may be unnecessary in the above Perl.

I need to append whatever is on the next line, which at the moment is "., just incase what is on the next line changes at some time in the future.

If necessary I can use the perl I have already to remove the CTRL-M, and sed to perform the append, using the
Code:
"~~"

as the search criteria for the sed. Just looking for some pointers.

Last edited by jim mcnamara; 04-16-2013 at 11:10 AM..
# 2  
Old 04-16-2013
Code:
$ sed '/\^M/ {s/\^M//g;N;s/\n//}' file
DEFINE NEW GLOBAL SHARED VARIABLE http-newline AS char NO-UNDO$
INITIAL "~~$".$

This User Gave Thanks to RudiC For This Post:
# 3  
Old 04-16-2013
Thanks RudiC, I will give that a go this afternoon. Thanks to Jim for properly displaying my post.

May I ask in the solution, how, what, where, since there seems a lot going on in a single line.

Seems like the
Code:
sed '/\^M/

is searching the ^M and then substitutes ^M .... and then I lose any understanding.

Last edited by skarnm; 04-16-2013 at 11:31 AM..
# 4  
Old 04-16-2013
Quote:
Originally Posted by RudiC
Code:
$ sed '/\^M/     # address expression: work on all lines containing ^M
{                # do e.th. below for the above address
   s/\^M//g;     # substitute ^M with nil (g)lobally
   N;            # append next input line
   s/\n//        # remove <new line> char
}
' file

This User Gave Thanks to RudiC For This Post:
# 5  
Old 04-16-2013
Thank you, that makes more sense to me now, especially the relationship being the '/\^M/ and the rest of commands in the { }.

Last edited by vbe; 04-16-2013 at 01:55 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Merging two lines into one (awk)

Hi, I am attempting to merge the following lines which run over two lines using awk. INITIAL OUTPUT 2019 Sep 28 10:47:24.695 hkaet9612 last message repeated 1 time 2019 Sep 28 10:47:24.695 hkaet9612 %ETHPORT-5-IF_DOWN_INTERFACE_REMOVED: Interfa ce Ethernet1/45 is down (Interface removed)... (10 Replies)
Discussion started by: sand1234
10 Replies

2. Shell Programming and Scripting

Merging multiple lines to columns with awk, while inserting commas for missing lines

Hello all, I have a large csv file where there are four types of rows I need to merge into one row per person, where there is a column for each possible code / type of row, even if that code/row isn't there for that person. In the csv, a person may be listed from one to four times... (9 Replies)
Discussion started by: RalphNY
9 Replies

3. Shell Programming and Scripting

Merging multiple lines

I do have a text file with multiple lines on it. I want to put the lines of text into a single line where ever there is ";" for example ert, ryt, yvig, fgr; rtyu, hjk, uio, hyu, hjo; ghj, tyu, gho, hjp, jklo, kol; The resultant file I would like to have is ert, ryt, yvig, fgr;... (2 Replies)
Discussion started by: Kanja
2 Replies

4. Shell Programming and Scripting

Merging lines

Thanks it worked for me. I have one more question on top of that. We had few records which were splitted in 2 lines instead of one. Now i identified those lines. The file is too big to open via vi and edit it. How can i do it without opening the file. Suppose, I want line number 1001 & 1002 to... (2 Replies)
Discussion started by: Gangadhar Reddy
2 Replies

5. Shell Programming and Scripting

merging two .txt files by alternating x lines from file 1 and y lines from file2

Hi everyone, I have two files (A and B) and want to combine them to one by always taking 10 rows from file A and subsequently 6 lines from file B. This process shall be repeated 40 times (file A = 400 lines; file B = 240 lines). Does anybody have an idea how to do that using perl, awk or sed?... (6 Replies)
Discussion started by: ink_LE
6 Replies

6. Shell Programming and Scripting

Merging lines

Hi folks. Could somebody help me write a script or command that will look through a file and for every line that doesn't contain a certain value, merge it with the one above? For example, the file contains: SCOTLAND|123|ABC|yes SCOTLAND|456|DEF|yes SCOTLAND|78 9|GHI|yes ... (3 Replies)
Discussion started by: MDM
3 Replies

7. Shell Programming and Scripting

Conditional merging of lines

I have a large file where some lines have been split into two lines; some of them even with white spaces before the second line. e.g in the following text I want to merge only specific lines ( say UNIX is cool), also removing white spaces only between them, others shall remain same on the output.... (4 Replies)
Discussion started by: sunny23
4 Replies

8. Shell Programming and Scripting

Merging lines in a file

Hi, I want to merge the lines starting with a comma symbol with the previous line of the file. Input : cat file.txt name1,name2 ,name3,name4 emp1,emp2,emp3 ,emp4 ,emp5 user1,user2 ,user3 Output name1,name2,name3,name4 emp1,emp2,emp3,emp4,emp5 (9 Replies)
Discussion started by: mohan_tuty
9 Replies

9. UNIX for Dummies Questions & Answers

merging two lines in a file

Hi All, I want to merge two lines in a file till the end of the file. So what could be the command to get so. say file name : sample.txt contents: country=1 send apps =1 rece=2 country=2 send apps =3 rece=3 .. ... output: country=1;send apps =1 rece=2 country=2;send apps =3... (6 Replies)
Discussion started by: thaduka
6 Replies

10. UNIX for Dummies Questions & Answers

Merging lines into one

Hello. I would be very pleased if sb. help me to solve my problem. I've got a file with many non blank lines and I want to merge all lines into one not destroy the informations on them. I've tryed it with split and paste, tr, sed , but everything I've done has been wrong. I know about crazy... (8 Replies)
Discussion started by: Foxgard
8 Replies
Login or Register to Ask a Question