Merge multiple lines into a single line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Merge multiple lines into a single line
# 29  
Old 07-17-2017
Hi dwdnet,
Here is a copy of the script with comments explaining what each line of code is doing:
Code:
awk '	# Use awk to run the following script.
# Function called to add the terminating <newline> to the end of a partial
# output line.
function p() {
	# Determine whether or not a partial record exists...
	if(d) {
		# ... A partial record does exist.  Add the terminating
		#  <newline>,and clear the d and s flags.
		print ""
		d = s = 0
	}
}
{	# For every line read from the input file, remove a <carriage-return>
	# character if one is present.
	sub(/\r/, "")
}
/^timestamp=/ {
	# We have found the 1st line of a new input record.
	# If we have a partial output record, finish it.
	p()
}
NF {	# For each input line that contains at least one non-<cspace>, non-<tab>
	# character...
	# ... (1) discard leading and trailing <space> and <tab> characters and
	# convert strings of internal <space> and <tab> characters to a single
	# <space> character.
	$1 = $1
	# ... (2) discard a trailing <semi-colon> if there is one, but set flag
	# so we know that we found one.
	ns = sub(/;$/, "")
	# ... (3) print a <semi-colon> if one was present at the end of the
	# previous non-empty input line, a separating <space> character if this
	# is not the 1st input line in a record, and the contents of the
	# compacted current input line (without the terminating <newline>
	# character).
	printf("%s%s%s", (s ? ";" : ""), (d ? " " : ""), $0)
	# ... (4) set the s flag to note whether or not we found a <semi-colon>
	# at the end of this input line.
	s = ns
	# ... and (5) set the d flag to note that we have now printed at least
	# one part of an output record.
	d = 1
}
END {	# When we hit EOF on the input file, terminate the last partial output
	# record if there is one.
	p()
}' file	# terminate the awk script and name the input file to be processed.

I hope this helps. Ask more questions if you still don't understand how something works.
This User Gave Thanks to Don Cragun For This Post:
# 30  
Old 07-17-2017
Thanks Don, definitely does help. I'll have to take some time to digest this.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

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

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

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

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

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

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

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

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

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

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
Login or Register to Ask a Question