Sponsored Content
Top Forums Shell Programming and Scripting Merge multiple lines into a single line Post 303000485 by Don Cragun on Thursday 13th of July 2017 02:22:13 AM
Old 07-13-2017
You could also try:
Code:
awk '
function p() {
        if(d) {
                print ""
                d = s = 0
        }
}
{       sub(/\r/, "")
} 
/^timestamp=/ {
        p()
} 
NF {    $1 = $1
        ns = sub(/;$/, "")
        printf("%s%s%s", (s ? ";" : ""), (d ? " " : ""), $0)
        s = ns
        d = 1
}              
END {   p()      
}' file

which gets rid of the DOS line terminator <carriage-return> characters, the semicolons at the ends of each output record that contains one, and strips out extraneous whitespace. With the sample input you provided in post #24, the above code produces the output:
Code:
timestamp=2017-06-23-15.26.59.242142; event status=0; userid=user1; authid=user1; application id=10.10.10.10.56150.170623204912; application name=application; statement text=xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx -1 xxxxx xxxxx ,-1 xxxxx xxxxx ,-1 xxxxx xxxxx ,xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx = 1 xxxxx :xxxxx :xxxxx = 'N' xxxxx xxxxx(xxxxx,-1) xxxxx -1 xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx = 1 xxxxx :xxxxx :xxxxx = 'N' xxxxx xxxxx(xxxxx,-1) xxxxx -1 xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx = 1 xxxxx :xxxxx :xxxxx = 'N' xxxxx xxxxx(xxxxx,-1) xxxxx -1 xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx = 1 xxxxx :xxxxx :xxxxx = 'N' xxxxx xxxxx(xxxxx,-1) xxxxx -1 xxxxx xxxxx xxxxx ,-1 xxxxx xxxxx ,xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xx xxxxx xxxxx = xxxxx xxxxx xxxxx xxxxx x xxxxx xxxxx = xxxxx xxxxx xxxxx xxxxx xx xxxxx xxxxx = xxxxx xxxxx xxxxx xxxxx x xxxxx xxxxx = xxxxx xxxxx xxxxx (xxxxx xxxxx, xxxxx, xxxxx xxxxx :xxxxx :xxxxx = x xxxxx xxxxx xxxxx (x,x) xxxxx x xxxxx xxxxx xxxxx xxxxx xxxxx, xxxxx xxxxx (xxxxx xxxxx xxxxx xxxxx xxxxx) xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx <= x xxxxx (:xxxxx :xxxxx = x xxxxx xxxxx <= x)) xxxx xxxxx xxxxx = xxxx.xxxxx xxxxx xxxx.xxxxx = x xxxxx xxxxx xxxxx xx xxxxx xxxxx = xxxxx xxxxx xxxxx xxxxx xx xxxxx xxxxx = xxxxx xxxxx xxxxx xxxxx x xxxxx xxxxx = xxxxx xxxxx ( (xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx = xxxxx) xxxxx (xxxxx xxxxx xxxxx xxxxx xxxxx) ) xxxxx ((:xxxxx :xxxxx xxxxx xxxxx :xxxxx :xxxxx = -1 ) xxxxx ((:xxxxx :xxxxx xxxxx xxxxx :xxxxx :xxxxx <> -1 ) xxxxx (xxxxx = :xxxxx :xxxxx xxxxx xxxxx xxxxx) ) ) xxxxx ((:xxxxx :xxxxx xxxxx xxxxx :xxxxx :xxxxx = -1 ) xxxxx ((:xxxxx :xxxxx xxxxx xxxxx :xxxxx :xxxxx <> -1 ) xxxxx xxxxx = :xxxxx :xxxxx xxxxx xxxxx = :xxxxx :xxxxx ) ) xxxxx ((:xxxxx :xxxxx xxxxx xxxxx :xxxxx :xxxxx = -1 ) xxxxx ((:xxxxx :xxxxx xxxxx xxxxx :xxxxx :xxxxx <> -1 ) xxxxx xxxxx = :xxxxx :xxxxx ) ) xxxxx (xxxxx xxxxx xxxxx xxxxx = 'Y') xxxxx xxxxx = 'Y' xxxxx xxxxx = 'Y' xxxxx xxxxx,xxxxx,xxxxx
timestamp=2017-06-23-15.26.59.244718; event status=0; userid=user1; authid=user1; application id=10.10.10.10.56150.170623204912; application name=application
timestamp=2017-06-23-15.27.29.623890; event status=0; userid=user1; authid=user1; application id=10.10.10.10.56150.170623204912; application name=application; statement text=xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx
timestamp=2017-06-23-15.27.29.625418; event status=0; userid=user1; authid=user1; application id=10.10.10.10.56150.170623204912; application name=application
timestamp=2017-06-23-15.28.00.043829; event status=0; userid=user1; authid=user1; application id=10.10.10.10.56150.170623204912; application name=application; statement text=xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx ,xxxxx xxxxx xxxxx = 1 xxxxx :xxxxx :xxxxx = 'N' xxxxx xxxxx(xxxxx.xxxxx,-1) xxxxx -1 xxxxx xxxxx xxxxx ,-1 xxxxx xxxxx xxxxx ( (xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx xxxxx = xxxxx) xxxxx (xxxxx xxxxx xxxxx xxxxx xxxxx) ) xxxxx ((:xxxxx :xxxxx xxxxx xxxxx :xxxxx :xxxxx = -1 ) xxxxx ((:xxxxx :xxxxx xxxxx xxxxx :xxxxx :xxxxx <> -1 ) xxxxx (xxxxx = :xxxxx :xxxxx xxxxx xxxxx xxxxx) ) ) xxxxx xxxxx,xxxxx,xxxxx
timestamp=2017-06-23-15.28.00.045415; event status=0; userid=user1; authid=user1; application id=10.10.10.10.56150.170623204912; application name=application

This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Removing end of line to merge multiple lines

I'm sure this will be an easy question for you experts out there, but I have been searching the forum and working on this for a couple hours now and can't get it right. I have a very messy data file that I am trying to tidy up - one of the issues is some records are split into multiple lines: ... (4 Replies)
Discussion started by: tink
4 Replies

2. 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

3. 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

4. Shell Programming and Scripting

merge lines into single line based on symbol \t

The symbols are \t and \t\t (note: not tab) If the line starts with \t merge them into a single line upto symbol \t\t \t\t to end and start new line I able to join in a single line but not ending at \t\t and I completely confused help would be appreciated:b::D Input \ta tab XXXXXXXXXX \te... (5 Replies)
Discussion started by: repinementer
5 Replies

5. UNIX for Advanced & Expert Users

Merge a group of lines into single line

Hi Everybody, Below are the contents of the a text file .., SN = 8 MSI = 405027002277133 IKVALUE = DE6AA6A11D42B69DF6398D44B17BC6F2 K4SNO = 2 CARDTYPE = SIM ALG = COMP128_3 SN = 8 MSI = 405027002546734 IKVALUE = 1D9F8BAA73973D8FBF8CBFB01436D822 K4SNO = 2 CARDTYPE = SIM ALG =... (8 Replies)
Discussion started by: prasanth_babu
8 Replies

6. 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

7. Shell Programming and Scripting

Merge multiple lines to one line when line starts with and ends with

example: comment Now_TB.table column errac is for error messages 1 - first 2 - second 3 -third ; in this example I need to be able to grab the comment as first word and ; as the last word and it might span a few lines. I need it to be put all in one line without line breaks so I can... (4 Replies)
Discussion started by: wambli
4 Replies

8. Shell Programming and Scripting

Merge multiple lines in one line

Hi guys, So i have a input file with several sequences aligned (fasta) >NC_005930 241 bp MNMINIFIINNIFDQFIPVKLSIFSLTSVGSIIA LSWVWINTKTHWAISRSNTP-SLLLNSL WTLLITNL-NEKTNPWAPWLFSLFLLCFSFNIMSLI-PYTF-SQ TSHLSFTFGLSLPIWIMVNIAGFKNNWKKKISHLLPQGTPIYLVPVMII IETISLFIQPLTLGFRLGANLLAGHLLIFLCSCTIWE... (6 Replies)
Discussion started by: andreia
6 Replies

9. UNIX for Dummies Questions & Answers

Need help combining txt files w/ multiple lines into csv single cell - also need data merge

:confused:Hello -- i just joined the forums. I am a complete noob -- only about 1 week into learning how to program anything... and starting with linux. I am working in Linux terminal. I have a folder with a bunch of txt files. Each file has several lines of html code. I want to combine... (2 Replies)
Discussion started by: jetsetter
2 Replies

10. UNIX for Beginners Questions & Answers

Merge multi-lines into one single line using shell script or Linux command

Hi, Can anyone help me for merge the following multi-line log which beginning with a " and line ending with ": into one line. *****Original Log***** 087;2008-12-06;084403;"mc;;SYHLR6AP1D\LNZW;AD-703;1;12475;SYHLR6AP1B;1.1.1.1;0000000062;HGPDI:MSISDN=12345678,APNID=1,EQOSID=365;... (3 Replies)
Discussion started by: rajeshlinux2010
3 Replies
All times are GMT -4. The time now is 07:39 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy