Visit Our UNIX and Linux User Community


How to use Perl to join multi-line into single line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to use Perl to join multi-line into single line
# 1  
Old 11-09-2009
How to use Perl to join multi-line into single line

Hello,


Did anyone know how to write a perl script to merge the multi-line into a single line where each line with start at timestamp



Input-->

timestamp=2009-11-10-04.55.20.829347;
a;
b;
c;


timestamp=2009-11-10-04.55.20.829347;
aa;
bb;
cc;


Output-->
timestamp=2009-11-10-04.55.20.829347;a;b;c;
timestamp=2009-11-10-04.55.20.829347;aa;bb;cc;


Thank You


HappyDay

---------- Post updated at 01:33 AM ---------- Previous update was at 01:31 AM ----------

Hello,

I had this script but can't work

# read "input.txt"
open (FILE, 'org.log') or die "$!";
open (NEWFILE, '> joinline.txt') or die "$!";
$line = '';
while (<FILE>) {
chomp($_);
if ($_ ne '') {
$line = $line . "" . $_;
} else {
print "$line\n";
print NEWFILE "$line\n";
$line = '';
}
}
close (FILE);
close (NEWFILE);
# 2  
Old 11-09-2009
Here's one way to do it with Perl:

Code:
$
$ cat -n f6
     1  timestamp=2009-11-10-04.55.20.829347;
     2  a;
     3  b;
     4  c;
     5
     6
     7  timestamp=2009-11-10-04.55.20.829347;
     8  aa;
     9  bb;
    10  cc;
$
$ perl -lne 'BEGIN{undef $/} s/\n//g; s/;(timestamp)/;\n$1/g; print' f6
timestamp=2009-11-10-04.55.20.829347;a;b;c;
timestamp=2009-11-10-04.55.20.829347;aa;bb;cc;
$
$

tyler_durden
# 3  
Old 11-10-2009
perl:
Code:
local $/="\n\n\n";
while(<DATA>){
	s/\n//g;
	print $_,"\n";
}
__DATA__
timestamp=2009-11-10-04.55.20.829347;
a;
b;
c;


timestamp=2009-11-10-04.55.20.829347;
aa;
bb;
cc;

sed:
Code:
sed -n '/^$/!{
${H;x;s/\n//g;p;}
$!{H;}
}
/^$/{x;s/\n//g;p;d;}' yourfile.txt | sed '/^$/d'

# 4  
Old 11-10-2009
Code:
 cat abc.txt
timestamp=2009-11-10-04.55.20.829347;
a;
b;
c;
ddaa;

timestamp=2009-11-10-04.55.20.829347;
aa;
bb;
cc;

Code:
 perl -e 'my $ln=0;
             while(<>){ 
                chomp;
                print "\n"if (m/^timestamp/ && $ln);
                print"$_";
                $ln++;}
print"\n" '

HTH,
PL
# 5  
Old 11-10-2009
And yet another:

Code:
$
$ cat -n f6
     1  timestamp=2009-11-10-04.55.20.829347;
     2  a;
     3  b;
     4  c;
     5
     6
     7  timestamp=2009-11-10-04.55.20.829347;
     8  aa;
     9  bb;
    10  cc;
    11
    12
    13
    14
    15
    16
    17  timestamp=2009-11-10-04.55.20.829347;
    18  aaa;
    19  bbb;
    20  ccc;
    21
    22  timestamp=2009-11-10-04.55.20.829347;
    23  aaaa;
    24  bbbb;
    25  cccc;
$
$ perl -lne 'chomp; if(/./){$s.=$_; $x=1} elsif(/^$/ && $x){print $s; $s=""; $x=0} END{print $s}' f6
timestamp=2009-11-10-04.55.20.829347;a;b;c;
timestamp=2009-11-10-04.55.20.829347;aa;bb;cc;
timestamp=2009-11-10-04.55.20.829347;aaa;bbb;ccc;
timestamp=2009-11-10-04.55.20.829347;aaaa;bbbb;cccc;
$
$

tyler_durden
# 6  
Old 11-10-2009
Code:
$\ = "\n";             
$/ = "\n\n";
while (<>) {  chomp;  s/\n//g;   print $_ ;}


Previous Thread | Next Thread
Test Your Knowledge in Computers #497
Difficulty: Medium
A computer compiler or interpreter is just as smart as a human.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multi line log files to single line format

I want to read the log file which was generate from other command . And the output was having multi line in log files for job name and server name. But i need to make all the logs on one line Source file 07/15/2018 17:02:00 TRANSLOG_1700 Server0005_SQL ... (2 Replies)
Discussion started by: ranjancom2000
2 Replies

2. Shell Programming and Scripting

Help with reformat single-line multi-fasta into multi-line multi-fasta

Input File: >Seq1 ASDADAFASFASFADGSDGFSDFSDFSDFSDFSDFSDFSDFSDFSDFSDFSD >Seq2 SDASDAQEQWEQeqAdfaasd >Seq3 ASDSALGHIUDFJANCAGPATHLACJHPAUTYNJKG ...... Desired Output File >Seq1 ASDADAFASF ASFADGSDGF SDFSDFSDFS DFSDFSDFSD FSDFSDFSDF SD >Seq2 (4 Replies)
Discussion started by: patrick87
4 Replies

3. UNIX for Dummies Questions & Answers

Remove multi line and single line comments

Hi, I am trying to remove multi line and single line comments like examples below I have tried this pattern. it works fine for single line comments and multi line comments in a single line only. but this fails when the comments are extended in multiple lines as shown in the comment 2 of... (3 Replies)
Discussion started by: ahmedwaseem2000
3 Replies

4. Shell Programming and Scripting

Joining multi-line output to a single line in a group

Hi, My Oracle query is returing below o/p ---------------------------------------------------------- Ins trnas value a lkp1 x a lkp1 y b lkp1 a b lkp2 x b lkp2 y ... (7 Replies)
Discussion started by: gvk25
7 Replies

5. Shell Programming and Scripting

Multi lines to single line

HI, My input file contains the data as like below: A1234119993 B6271113 Bghjkjk A1234119992 B6271113hi Bghjkjkmkl the output i require is : A1234119993 B6271113 Bghjkjk A1234119992 B6271113hi Bghjkjkmkl Please help me in this. Thanks (6 Replies)
Discussion started by: pandeesh
6 Replies

6. Shell Programming and Scripting

Merge multi-line output into a single line

Hello I did do a search and the past threads doesn't really solve my issue. (using various awk commands) I need to combine the output from java -version into 1 line, but I am having difficulties. When you exec java -version, you get: java version "1.5.0_06" Java(TM) 2 Runtime... (5 Replies)
Discussion started by: flagman5
5 Replies

7. Shell Programming and Scripting

Help on Merge multi-lines into one single line

Hello, Can anyone let me know how to use Perl script to Merge following multi-lines into one single line... ***** Multi-line***** FILE_Write root OK Tue Jul 01 00:00:00 2008 cl_get_path file descriptor = 1 FILE_Write root OK ... (5 Replies)
Discussion started by: happyday
5 Replies

8. Shell Programming and Scripting

How to use Perl to merge multi-line into single line

Hi, Can anyone know how to use perl to merge the following multi-line information which beginning with "BAM" into one line. For each line need to delete the return and add a space. Please see the red color line. ******Org. Multi-line) BAM admin 101.203.57.22 ... (3 Replies)
Discussion started by: happyday
3 Replies

9. Shell Programming and Scripting

Merge multi-lines into one single line

Hi, Can anyone help me for merge the following multi-line log which beginning with a number and time: into one line. For each line need to delete the return and add a space. Please see the red color line. *****Original Log*****... (4 Replies)
Discussion started by: happyday
4 Replies

10. Shell Programming and Scripting

Multi-line output to single line

Hello, How can I take the following output: outputa outputb outputc and turn it into single line ouput, with a single space between each field like below: outputa outputb outputc (7 Replies)
Discussion started by: LinuxRacr
7 Replies

Featured Tech Videos