Multiple lines into a single line on Ubuntu 10.04


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Multiple lines into a single line on Ubuntu 10.04
# 1  
Old 10-19-2010
Multiple lines into a single line on Ubuntu 10.04

Hi,

I've some files with the following data and i need to convert the lines between the separator ---, into a single line. I've tried with the paste cmd but my main problem is that the number of lines between the separator is not fix, it can vary between 1-4 lines.

Input
Code:
---
2010-02-22 12:25:32
191
---
2010-02-22 12:25:32
---

Output
Code:
--- , 2010-02-22 12:25:32 , 191
--- , 2010-02-22 12:25:32

Sometime ago i posted this message and got the following solution:

Code:
awk 'END{print _}/^-/{if(_)print _;_=$0;next}{_=_" , "$0}' infile

My problem is that this solution only works on Ubuntu 9.10 and i recently upgraded my machine to Ubuntu 10.04, and when i execute the awk command it only returns the last line before the separator (---).

Amy ideia why this happens?

Thanks in advance

Last edited by Scott; 10-20-2010 at 06:10 AM.. Reason: Please use code tags
# 2  
Old 10-19-2010
This works for me:

Code:
awk '
        function p()
        {
                if( buffer )
                        print "---" buffer;     # print if it existed; dont print for last seperator
        }

        /^---/ {
                p();            # print if not first
                buffer = "";    # reset
                next;
        }

        { buffer = buffer ", " $0; }    # add lines to buffer

        END { p(); }            # handle case of no terminating separator
' <input-file

This User Gave Thanks to agama For This Post:
# 3  
Old 10-20-2010
I'd be interested to know why the original awk script fails in Ubuntu 10.04?
# 4  
Old 10-20-2010
try gawk.

may be in the new s/w version's awk is the broken one.

Code:
gawk 'END{print _}/^-/{if(_)print _;_=$0;next}{_=_" , "$0}' infile

# 5  
Old 10-20-2010
mawk works with the script in post#1, gawk does not. They both work if you use a letter instead of an underscore:
Code:
awk 'END{print p}/^-/{if(p)print p;p=$0;next}{p=p" , "$0}' infile

With 10.04 the default awk changed from mawk to gawk on Ubuntu.
This User Gave Thanks to Scrutinizer For This Post:
# 6  
Old 10-20-2010
It's true if i execute the command with mawk it works, but if i use awk it doesn't.

One more thing the command should join all lines between the separator into one, and instead is creating 2 lines any idea why.

Source File:
Code:
-------
2010-10-18;10:55:50;AV;0594  
F0594
Windows NT Versi¢n 4.0  
lun 18/10/2010 
10.55 
-------
2010-10-18;10:55:56;AV;0591  
F0591
Windows NT Versi¢n 4.0  
lun 18/10/2010 
10.55 
-------

Current output
Code:
(mawk 'END{print _}/^-/{if(_)print _;_=$0;next}{_=_";"$0}' infile)

-------;2010-10-18;10:55:50;AV;0594 
;F0594;Windows NT Versi¢n 4.0  ;lun 18/10/2010 ;10.55 
-------;2010-10-18;10:55:56;AV;0591 
;F0591;Windows NT Versi¢n 4.0  ;lun 18/10/2010 ;10.55

Desired output (single row):
Code:
-------;2010-10-18;10:55:50;AV;0594 ;F0594;Windows NT Versi¢n 4.0  ;lun 18/10/2010 ;10.55

Thanks for the help

Last edited by Scott; 10-20-2010 at 05:42 PM.. Reason: Code tags, please...
# 7  
Old 10-20-2010
I can't reproduce this. I get:
Code:
$ mawk 'END{print _}/^-/{if(_)print _;_=$0;next}{_=_";"$0}' infile
-------;2010-10-18;10:55:50;AV;0594  ;F0594;Windows NT Versi¢n 4.0  ;lun 18/10/2010 ;10.55
-------;2010-10-18;10:55:56;AV;0591  ;F0591;Windows NT Versi¢n 4.0  ;lun 18/10/2010 ;10.55
-------

This User Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Multiple lines to single line

I have code as below # create temporary table `temp4277`(key(waybill_no)) select waybill_no,concat_ws('',card_type,card_series_no) cardinfo from rfid_temp_ticket where waybill_no='4277' group by... (4 Replies)
Discussion started by: kaushik02018
4 Replies

2. Shell Programming and Scripting

Merge multiple lines into a single line

Hi all, I'm relatively new to scripting, I can do pretty basic things. I have a daily log file that looks like: timestamp=2017-06-28-01.01.35.080576; event status=0; userid=user1; authid=user1; application id=10.10.10.10.11111.12345678901; application name=GUI; ... (29 Replies)
Discussion started by: dwdnet
29 Replies

3. Shell Programming and Scripting

Coverting multiple lines to a single line

Hi all, I have a requirement to covert multiple lines in a comma delimited file to a single line through shell scripting. We should compare the data in the first column in each line. If it is same, then the other data should be put in the same line.Below is the sample input and expected output:... (4 Replies)
Discussion started by: Bobby_2000
4 Replies

4. Shell Programming and Scripting

Making multiple lines as single line

Hi All, I have a spool file which as shown below. I want to make it as single line after every semicolon. In this case there should be 2 lines in vi editor. I am not used to use sed so could you guys please help me out ? exec spk_dba.sp_runsql('ALP','CREATE DATABASE LINK "TEST" CONNECT TO... (2 Replies)
Discussion started by: nicolas38
2 Replies

5. Shell Programming and Scripting

Combine multiple lines into single line

Hi All , I have a file with below data # User@Host: xyz @ # Query_time: t1 Lock_time: t2 Rows_sent: n1 Rows_examined: n2 SET timestamp=1396852200; select count(1) from table; # Time: 140406 23:30:01 # User@Host: abc @ # Query_time: t1 Lock_time: t2 Rows_sent: n1 Rows_examined:... (6 Replies)
Discussion started by: rakesh_411
6 Replies

6. Shell Programming and Scripting

merging multiple lines into single line

Hi, 1. Each message starts with date 2. There is blank line between each message 3. Each message does not contain same number of lines. Any help in merging multiple lines in each message to a single line is much appreciated. AIX: Korn Shell Error log file looks like below. ... (5 Replies)
Discussion started by: bala123
5 Replies

7. Shell Programming and Scripting

Multiple lines in a single column to be merged as a single line for a record

Hi, I have a requirement with, No~Dt~Notes 1~2011/08/1~"aaa bbb ccc ddd eee fff ggg hhh" Single column alone got splitted into multiple lines. I require the output as No~Dt~Notes 1~2011/08/1~"aaa<>bbb<>ccc<>ddd<>eee<>fff<>ggg<>hhh" mean to say those new lines to be... (1 Reply)
Discussion started by: Bhuvaneswari
1 Replies

8. Shell Programming and Scripting

Combine multiple lines in single line

This is related to one of my previous post but now with a slight difference: I need the "Updated:" to be in one line as well as the "Information:" on one line as well. These are in multiple lines right now as seen below. These can have 2 or more lines that needs to be in one line. System name:... (8 Replies)
Discussion started by: The One
8 Replies

9. Shell Programming and Scripting

Multiple lines into a single line

Hi, I've some files with the following data and i need to convert the lines between the separator ---, into a single line. I've tried with the paste cmd but my main problem is that the number of lines between the separator is not fix, it can very between 1-4 lines. Input --- 2010-02-22... (4 Replies)
Discussion started by: RickyC9999
4 Replies

10. Shell Programming and Scripting

Getting multiple messy lines into one single line

I have a file that contains the following: :@:176:@:4:@:name:@:file:@:this is a summary:@:description can be long but who knows can even have <br> tags.:@:how to:@:type:@:18544:@:550:@:400:END: :@:177:@:9:@:name:@:file:@:summary:@:this will containg... (18 Replies)
Discussion started by: sysrenan
18 Replies
Login or Register to Ask a Question