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-20-2009
Another (one_of_the_with) with perl would be,
Code:
perl -e 'while(<>){chomp;print $_,"#";}' infile > outfile

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

perl -nle "BEGIN{$\='#'} print " infile > outfile
# 5  
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.

# 6  
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
# 7  
Old 12-20-2009
i think the following serves the purpose:
sed 's/\n/#/g' source_file_name >destn_file_name .
Please correct me if i am wrong.
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