Getting multiple messy lines into one single line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Getting multiple messy lines into one single line
# 8  
Old 11-13-2009
And another one:

Code:
awk 'NF { sub(/ $/, x); r = r ? r FS $0 : $0 }
/:END:/ { print r; r = x }' infile

# 9  
Old 11-14-2009
Quote:
Originally Posted by radoulov
And another one:

Code:
awk 'NF { sub(/ $/, x); r = r ? r FS $0 : $0 }
/:END:/ { print r; r = x }' infile

Hi Radoulov

I don't get what you are doing with the sub function, from reading up on sub it looks like you are changing any space on the end of a line to an x from what I can see. How does this work?Smilie
# 10  
Old 11-14-2009
I think it is the same as:
Code:
awk 'NF { sub(/ $/, ""); r = r ? r FS $0 : $0 }
/:END:/ { print r; r = "" }' infile

, but x (being unitialized) contains "" and is therefore equivalent but only one character instead of two so it shortens the expression.
# 11  
Old 11-14-2009
Quote:
Originally Posted by Scrutinizer
I think it is the same as:
Code:
awk 'NF { sub(/ $/, ""); r = r ? r FS $0 : $0 }
/:END:/ { print r; r = "" }' infile

, but x (being unitialized) contains "" and is therefore equivalent but only one character instead of two so it shortens the expression.
Exactly.
Just to avoid doubling the space after substituting the newline with FS.
# 12  
Old 11-14-2009
Code:
awk 'BEGIN{RS="";FS="\n"}{$1=$1;print}'

If you don't like the extra spaces due to the trailing spaces at the end of the line from the input, do
Code:
awk 'BEGIN{RS="";FS=" *\n"}{$1=$1;print}'

# 13  
Old 11-14-2009
So it could be shortened to:
Code:
awk 'BEGIN{RS="";FS=" *\n"}$1=$1'

Nice, but this is relying on the presence of empty lines between records. If that is always the case fine, but the OP wasn't specific about that IMO.
# 14  
Old 11-14-2009
Quote:
Nice, but this is relying on the presence of empty lines between records[...]
... and it will fail if there are one or more empty lines inside the logical record (between ^:@ and :END:).
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

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

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

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

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

8. Shell Programming and Scripting

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 --- 2010-02-22... (8 Replies)
Discussion started by: RickyC9999
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

Splitting a single line into multiple lines

I have a case where, I need to look into a file. Go to each line of the file, find the length of the line, if the length of the line is more than 75 chars, I need to split the line into multiple lines of 75chars max. If the length of the line is less than 75, we need not do anything. So at the... (4 Replies)
Discussion started by: thanuman
4 Replies
Login or Register to Ask a Question