How to use SED to join multiple lines?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to use SED to join multiple lines?
# 1  
Old 12-20-2009
How to use SED to join multiple lines?

Hi guys,

anyone know how can i join multiples lines using sed till the end of a file and output to another file in a single line?
The end of each line will be replaced with a special char "#".

I am using the below SED command, however it seems to remove the last 2 lines. Also not all lines are joined together.
Code:
sed 'N;N;s/\n/#/g'

Example of Input File:
Code:
Builtin :Sign CA
"CN=CA,OU=Root CA,O=Sign nv-sa,C=BE"
"CN=CA,OU=Root CA,O=Sign nv-sa,C=BE"
04:00:00:00:5A:C3:94
3E:09:51:92:E1:B7:5D:37:9F:B1:87:29:8A
rsa
2048
Sep 1, 1990 8:00:00 PM
Jan 30, 2020 8:00:00 PM
false
true
true
false
true
true
false
false


TIA
# 2  
Old 12-20-2009
Hi.

I think this is what you mean. If not, please post how your output should look.

Code:
sed -e :a -e ';$!N;s/\n/#/;ta' input_file > output_file

Or something similar in awk:
Code:
awk -v ORS="#" 1 input_file > output_file

Or with paste
Code:
paste -sd"#" input_file > output_file

Or with tr
Code:
tr "\n" "#" < input_file > output_file

As you can see, all easier than sed!
# 3  
Old 12-21-2009
Quote:
Originally Posted by scottn
Hi.

I think this is what you mean. If not, please post how your output should look.

Code:
sed -e :a -e ';$!N;s/\n/#/;ta' input_file > output_file

Or something similar in awk:
Code:
awk -v ORS="#" 1 input_file > output_file

Or with paste
Code:
paste -sd"#" input_file > output_file

Or with tr
Code:
tr "\n" "#" < input_file > output_file

As you can see, all easier than sed!
Thanks for correcting me on that Bro.
Another representation of your code that works is
sed -e :a -e N -e 's/\n/#/' -e ta original_file_name >new_filename
Please correct if i am wrong.
# 4  
Old 12-20-2009
Another (one_of_the_with) with perl would be,
Code:
perl -e 'while(<>){chomp;print $_,"#";}' infile > outfile

# 5  
Old 12-20-2009
another one in perl :

perl -nle "BEGIN{$\='#'} print " infile > outfile
# 6  
Old 12-20-2009
Quote:
Originally Posted by penchal_boddu
another one in perl :

perl -nle "BEGIN{$\='#'} print " infile > outfile
Hello ,
doesnt work . Can you explain the logic behind it.
Code:
gaurav@localhost:~$ echo -e "hello\nHi" |perl -nle 'BEGIN{$\='#'} print'
syntax error at -e line 1, at EOF
BEGIN not safe after errors--compilation aborted at -e line 1.

# 7  
Old 12-20-2009
Quote:
Originally Posted by gaurav1086
Hello ,
doesnt work . Can you explain the logic behind it.
Code:
gaurav@localhost:~$ echo -e "hello\nHi" |perl -nle 'BEGIN{$\='#'} print'
syntax error at -e line 1, at EOF
BEGIN not safe after errors--compilation aborted at -e line 1.


$\ is a special variable in perl that represents output record separator.

Code:
echo -e "hello\nHi" |perl -nle "BEGIN{$\='#'} print  "

1. make sure you give a space between the print and double quote which you havent done in your statement

2. try the perl comamnd in double quotes instead of single quote

Thanks
Penchal
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Join columns across multiple lines in a Text based on common column using BASH

Hello, I have a file with 2 columns ( tableName , ColumnName) delimited by a Pipe like below . File is sorted by ColumnName. Table1|Column1 Table2|Column1 Table5|Column1 Table3|Column2 Table2|Column2 Table4|Column3 Table2|Column3 Table2|Column4 Table5|Column4 Table2|Column5 From... (6 Replies)
Discussion started by: nv186000
6 Replies

2. UNIX for Beginners Questions & Answers

Sed/awk join lines once pattern found

Hi all OS - RHEL6.4 I have input file -f1.txt I need to search line which starts with \Start and read next line till it gets blank line and join them all. I need to trim any trailing spaces for each line.So output.txt should be.. \Start\now\fine stepwatch this space for toolsends... (7 Replies)
Discussion started by: krsnadasa
7 Replies

3. Shell Programming and Scripting

Join lines using sed or awk

Hi, I have text file that looks like this: blabla bla PATTERN LINE1 LINE2 bla bla bla PATTERN LINE1 LINE2 bla PATTERN LINE1 LINE2 bla (9 Replies)
Discussion started by: hench
9 Replies

4. Shell Programming and Scripting

Join multiple lines from text file

Hi Guys, Could you please advise how to join multiple details lines into single row, with HEADER 1 as the record separator and comma(,) as the field separator. Input: HEADER 1, HEADER 2, HEADER 3, 11,22,33, COLUMN1,COLUMN2,COLUMN3, AA1, BB1, CC1, END: ABC HEADER 1, HEADER 2,... (3 Replies)
Discussion started by: budz26
3 Replies

5. Shell Programming and Scripting

Join common patterns in multiple lines into one line

Hi I have a file like 1 2 1 2 3 1 5 6 11 12 10 2 7 5 17 12 I would like to have an output as 1 2 3 5 6 10 7 11 12 17 any help would be highly appreciated Thanks (4 Replies)
Discussion started by: Harrisham
4 Replies

6. Shell Programming and Scripting

Join multiple lines

Hi I have a source file ( written i C ) where a funtion call is spread over multiple lines, for example : func( a, b, c ); I want this to be joined into one single line : func(a,b,c); How can this be done with awk and sed ? Regards. Hench (2 Replies)
Discussion started by: hench
2 Replies

7. UNIX for Dummies Questions & Answers

sed, join lines that do not match pattern

Hello, Could someone help me with sed. I have searched for solution 5 days allready :wall:, but cant find. Unfortunately my "sed" knowledge not good enough to manage it. I have the text: 123, foo1, bar1, short text1, dat1e, stable_pattern 124, foo2, bar2, long text with few lines, date,... (4 Replies)
Discussion started by: petrasl
4 Replies

8. UNIX for Dummies Questions & Answers

Join 2 files with multiple columns: awk/grep/join?

Hello, My apologies if this has been posted elsewhere, I have had a look at several threads but I am still confused how to use these functions. I have two files, each with 5 columns: File A: (tab-delimited) PDB CHAIN Start End Fragment 1avq A 171 176 awyfan 1avq A 172 177 wyfany 1c7k A 2 7... (3 Replies)
Discussion started by: InfoSeeker
3 Replies

9. Shell Programming and Scripting

join on a file with multiple lines, fields

I've looked at the join command which is able to perform what I need on two rows with a common field, however if I have more than two rows I need to join all of them. Thus I have one file with multiple rows to be joined on an index number: 1 randomtext1 2 rtext2 2 rtext3 3 rtext4 3 rtext5... (5 Replies)
Discussion started by: crimper
5 Replies

10. Shell Programming and Scripting

Awk Join multiple lines

Hi, I have data with broken lines: Sample data: "12"|"25"|"a"|"b"|"c"|"d"|"e"|"f"|"2453748"|"08:10:50" "16"|"25"|"a"|"b"|"c"|"d"|"e"|"f"|" 2453748"|"08:15:50" "16"|"25"|"a"|"b"|" c"|"d"|"e"|"f"|"2453748"|"08:19:50" "16"|"25"|"a"|"b"|"c"|"d"|"e"|"f"|"2453748"|"08:19:50" In the... (5 Replies)
Discussion started by: hitmansilentass
5 Replies
Login or Register to Ask a Question