Visit Our UNIX and Linux User Community


Converting columns of text to rows, with blank lines


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Converting columns of text to rows, with blank lines
# 1  
Old 11-09-2017
Converting columns of text to rows, with blank lines

I've spent the past hour trying different things and googling for this solution and cannot find the answer. Found variations of this, but not this exact thing.

I have the following text, which is the output from our mainframe. Each field is on a separate line, with a blank line between each record. I want to the lines together. A blank line indicates a new row. Note that some of the fields contain slashes, periods, and other punctuation. Also the number of lines to join is variable, but records are always separated by a single blank line.

This is the contents of the source text file:
Code:
7LKZB88901
DC090SDFKGHSDD
REJECT REASON DDP/09/Q
SCC/GO/SEX.M.DNY/ALASKA/ CONTACT THE DENYING AGENCY
For the following
DUPLICATE

7LKZB88902
DC090RDFK1HSDD
PENDING

8PKZB88903
DC0901DFK1HSD7
ACCEPT

7LKZB88901
DC090SDFKGHSDD
REJECT REASON DDP/09/Q
SCC/GO/SEX.M.DNY/ALASKA/ CONTACT THE DENYING AGENCY
For the following
ERROR

5KZZB88912
DC0901DFF1HGG2
ACCEPT

And here's what I want the output to look like:

Code:
7LKZB88901 DC090SDFKGHSDD REJECT REASON DDP/09/Q SCC/GO/SEX.M.DNY/ALASKA/ CONTACT THE DENYING AGENCY For the following DUPLICATE
7LKZB88902 DC090RDFK1HSDD PENDING
8PKZB88903 DC0901DFK1HSD7 ACCEPT
7LKZB88901 DC090SDFKGHSDD REJECT REASON DDP/09/Q SCC/GO/SEX.M.DNY/ALASKA/ CONTACT THE DENYING AGENCY For the following ERROR
5KZ4B88912 DC0901DFF1HGG2 ACCEPT

My script foo isn't powerful enough. Smilie Any help is appreciated with this one. Smilie

Last edited by lupin..the..3rd; 11-09-2017 at 03:49 PM..
# 2  
Old 11-09-2017
How about
Code:
awk '$1=$1' OFS=" " RS= file
7LKZB88901 DC090SDFKGHSDD REJECT REASON DDP/09/Q SCC/GO/SEX.M.DNY/ALASKA/ CONTACT THE DENYING AGENCY For the following DUPLICATE
7LKZB88902 DC090RDFK1HSDD ACCEPT
8PKZB88903 DC0901DFK1HSD7 ACCEPT
7LKZB88901 DC090SDFKGHSDD REJECT REASON DDP/09/Q SCC/GO/SEX.M.DNY/ALASKA/ CONTACT THE DENYING AGENCY For the following DUPLICATE
5KZZB88912 DC0901DFF1HGG2 ACCEPT

Might not work with all awk version, pls. post yours.
This User Gave Thanks to RudiC For This Post:
# 3  
Old 11-09-2017
Quote:
Originally Posted by RudiC
How about
Code:
awk '$1=$1' OFS=" " RS= file
7LKZB88901 DC090SDFKGHSDD REJECT REASON DDP/09/Q SCC/GO/SEX.M.DNY/ALASKA/ CONTACT THE DENYING AGENCY For the following DUPLICATE
7LKZB88902 DC090RDFK1HSDD ACCEPT
8PKZB88903 DC0901DFK1HSD7 ACCEPT
7LKZB88901 DC090SDFKGHSDD REJECT REASON DDP/09/Q SCC/GO/SEX.M.DNY/ALASKA/ CONTACT THE DENYING AGENCY For the following DUPLICATE
5KZZB88912 DC0901DFF1HGG2 ACCEPT

Might not work with all awk version, pls. post yours.
That didn't work for me, it concatenated all records into one single row, rather than each record into its own row.

This is a RHEL 6 server, the awk is GNU awk v3.1.7

Thanks
# 4  
Old 11-09-2017
Try RS="" and / or RS="\n\n".
This User Gave Thanks to RudiC For This Post:
# 5  
Old 11-09-2017
Quote:
Originally Posted by RudiC
Try RS="" and / or RS="\n\n".
Hmm..

The first one removes the blank lines, but does not concatenate any lines.

The second one concatenates all lines from all records into a one single row.
# 6  
Old 11-09-2017
Code:
awk '$1=$1' RS= infile

This User Gave Thanks to rdrtx1 For This Post:
# 7  
Old 11-09-2017
Yikes, ok, I just realized it's not a blank line in between records. It's a line containing a single " " space character.

I have deleted all of those single-spaces, so the blank lines are truly blank lines, and the solution worked.

thank you!

Last edited by lupin..the..3rd; 11-09-2017 at 05:29 PM..

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Converting rows into columns

hi all I need a help ..I have a script that takes has command and its output is like below.. a b a v v a c I am assigning the above outputs to a variable .. <variable name> = <command output> problem here is when I echo the variable ..it gives me output like " a b... (3 Replies)
Discussion started by: shankarb
3 Replies

2. UNIX for Dummies Questions & Answers

Converting txt output to rows and columns and send report via mail.

Hi All, I would like to send below output in a tabular column ( xml or excel ) and send a mail. vinay unix anil sql vamsee java request to suggest a solution. (1 Reply)
Discussion started by: Girish19
1 Replies

3. UNIX for Dummies Questions & Answers

Converting Columns To Rows Sort Of

Hi I'm a UNIX awk and sed novice at best. I'm trying to creat a .csv file so it can be graphed in Excel. Tried various xargs, awk, sed and paste but just can't seem to get the data to line up. Not sure if this is beyond for a question in these forums. Any help would greatly be appreciated. Have... (4 Replies)
Discussion started by: jimmyf
4 Replies

4. Shell Programming and Scripting

Converting rows to columns in csv file

Hi, I have a requirement to convert rows into columns. data looks like: c1,c2,c3,.. r1,r2,r3,.. p1,p2,p3,.. and so on.. output shud be like this: c1,r1,p1,.. c2,r2,p2,.. c3,r3,p3,.. Thanks in advance, (12 Replies)
Discussion started by: Divya1987
12 Replies

5. Shell Programming and Scripting

Need to remove a selection of rows separated by blank lines

hello, here is an example: 9.07 9.05 0.00 2.28 0.00 0.08 1.93 3.62 10.97 12.03 12.03 0.00 2.73 0.00 0.07 (3 Replies)
Discussion started by: Baron1
3 Replies

6. Shell Programming and Scripting

Perl : blank lines are displayed in the output after deleting few rows from excel

I am working on an assignment to pull all the records from excel sheet programatically and use the data for further calculations. In this process, I first defined 10 records in excel sheet and executed the below code. In the first run it is OK. But after deleting last few rows in excel sheet and... (0 Replies)
Discussion started by: giridhar276
0 Replies

7. Shell Programming and Scripting

Converting rows to columns using shell script

I have a script which converts rows to columns. file_name=$1 mailid=$2 #CREATE BACKUP OF ORIGINAL FILE #cp ${file_name}.xlsx ${file_name}_temp.xlsx #tr '\t' '|' < ${file_name}_temp.xlsx > ${file_name}_temp.csv #rm ${file_name}_temp.xlsx pivot_row=`head -1 ${file_name}` sed 1d... (3 Replies)
Discussion started by: andy538
3 Replies

8. Shell Programming and Scripting

converting rows into columns

Hi, I am trying to fetch some values from db and spooling the output to a file. when i query the db for the values, i get the values in following format. PC_1 wf_test1 Test PC_2 wf_test2 Test PC_3 wf_test3 Test But my spool file was created in following format. PC_1 wf_test1 Test... (20 Replies)
Discussion started by: svajhala
20 Replies

9. UNIX for Dummies Questions & Answers

Converting columns into rows

Is there anyway to convert columns into raws using awk? (or any other command line):eek::eek::eek::eek::eek::eek::eek::eek::eek: (1 Reply)
Discussion started by: cosmologist
1 Replies

10. Shell Programming and Scripting

how to converting rows to columns, bash

I have in file these words: @fraza1 = rw @fraza2 = r @fraza3 = r @fraza4 = r @fraza5 = r @fraza1 = r @fraza6 = r @fraza7 = r @fraza2 = r @fraza8 = r @fraza9 = r ... I would like so that: ,rw,@fraza1 ,r,@fraza2 (2 Replies)
Discussion started by: patrykxes
2 Replies

Featured Tech Videos