Row to column transpose between same pattern.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Row to column transpose between same pattern.
# 1  
Old 06-14-2012
Row to column transpose between same pattern.

Hi All,

I have been trying to transpose rows to column in an large file (about 15000 lines) between matching pattern. Searched all posts in this forum, but not able find the solution to my problem. Any help appreciated.!!

Input
Code:
/*------XXXXXX-------*/
 
owner: XXXX
location: XXXX
Comment: XXXX
Phone: XXXX
 
/*------XXXXXX-------*/
 
owner: XXXX
location: XXXX
Desc: XXXX
Comment: XXXX
Phone: XXXX
Log: XXXX
 
/*------XXXXXX-------*/
Test: XXXX
Site: XXXX
Area: XXX

My desired output is
Code:
/*------XXXXXX-------*/^owner: XXXX^location: XXXX^Comment: XXXX^Phone: XXXX
/*------XXXXXX-------*/^owner: XXXX^location: XXXX^Desc: XXXX^Comment: XXXX^Phone: XXXX^Log: XXXX
/*------XXXXXX-------*/^Test: XXXX^Site: XXXX^Area: XXX

Match pattern "/*------" and then join all the line into single line, before next appearance of same pattern.

Thanks in advance.


Moderator's Comments:
Mod Comment Please use code tags, thanks!

Last edited by zaxxon; 06-14-2012 at 10:09 AM.. Reason: code tags
# 2  
Old 06-14-2012
Try...
Code:
awk '/\/\*------/{if(b)print b;b=$0;next}NF{b=b "^" $0}END{print b}' file1 > file2

These 2 Users Gave Thanks to Ygor For This Post:
# 3  
Old 06-14-2012
Hi RobP,

One way using perl:
Code:
$ cat infile
/*------XXXXXX-------*/

owner: XXXX
location: XXXX
Comment: XXXX
Phone: XXXX

/*------XXXXXX-------*/

owner: XXXX
location: XXXX
Desc: XXXX
Comment: XXXX
Phone: XXXX
Log: XXXX

/*------XXXXXX-------*/
Test: XXXX
Site: XXXX
Area: XXX
$ cat script.pl
use strict;
use warnings;

my @data;

while ( <> ) {
        next unless m/\S/;
        chomp;

        if ( m{\A/\*-+} ) {
                printf qq[%s\n], join qq[^], splice @data if ( @data );
                push @data, $_;
                next;
        }

        push @data, $_;

        if ( eof && @data ) {
                printf qq[%s\n], join qq[^], splice @data;
        }
}
$ perl script.pl infile
/*------XXXXXX-------*/^owner: XXXX^location: XXXX^Comment: XXXX^Phone: XXXX
/*------XXXXXX-------*/^owner: XXXX^location: XXXX^Desc: XXXX^Comment: XXXX^Phone: XXXX^Log: XXXX
/*------XXXXXX-------*/^Test: XXXX^Site: XXXX^Area: XXX

This User Gave Thanks to birei For This Post:
# 4  
Old 06-14-2012
Hi Ygor / birei,

Thank you both for quick help. I have tried both awk code and perl script. For my example file both the codes working fine, however when I am using the same code (awk) in my original file all the lines joined to single line instead a new line to start with matching pattern, and with perl script there is no output at all. May be something is wrong in the example I used.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Transpose the Row and column

Hi, I have data in form of A ram B shyam C seeta D geeta A bob B methew C Richad D Mike and i want it in this form. A B C D ram shyam seeta geeta bob methew Richard Mike. please help by providing the scripting for this. (3 Replies)
Discussion started by: ricbha
3 Replies

2. Shell Programming and Scripting

How transpose column in a row?

Hello guys, First of all happy holidays and happy new year. I'm new in bioinformatic and also it is my first time that I write in this forum. Therefore, sorry if I make some mistakes. I'm writing to ask your help to fix a problem: I have a file like this: gene1 GO:0016491|GO:0055114... (8 Replies)
Discussion started by: Salvatore_espos
8 Replies

3. Shell Programming and Scripting

Transpose from row to column using timestamp in first column

Gents, Transpose from row to column, taking in consideration the first column, which contends the date. Input file 72918,111000009,111000009,111000009,111000009,111000009,111000009,111000009,111000009,111000009 72918,2356,2357,2358,2359,2360,2361,2362,2363,2364 72918,0,0,0,0,0,0,0,0,0... (12 Replies)
Discussion started by: jiam912
12 Replies

4. Shell Programming and Scripting

Transpose row to column

I'm using the testawk.awk from the following thread https://www.unix.com/shell-programming-and-scripting/18897-row-column-transpose.htmlI'm getting the following output fieldname1 data1 fieldname2 data2 fieldname3 data3 How can I get like this instead 1 fieldname1 data1 2 fieldname2 data2... (1 Reply)
Discussion started by: makkan
1 Replies

5. Shell Programming and Scripting

To transpose row into column

Hi All, In shell, I have below data coming from some some text file as below: . 351706 5861.8 0.026 0.012 12.584 0.026 0.012 12.582 0.000 0.000 0.000 Now i need the above data to be transposed as below 351706... (16 Replies)
Discussion started by: Anamica
16 Replies

6. Shell Programming and Scripting

Column to row Transpose

Hi Folks, Iam a kinda newbie to unix shell scripting, the scenario is i have a text file containing the following info Charlie chicago 15 Charlie newyork 26 jonny chicago 14 jonny newyork 15 joe chicago 15 joe newyork 18output should be Name chicago ... (3 Replies)
Discussion started by: tech_frk
3 Replies

7. UNIX for Dummies Questions & Answers

Row to column transpose

Hi there, Below is sample three rows which i need transpose into multiple rows. By keeping first 2 fields static and split them into multiple rows depend following date field. Each into seperate rows. Sample code: ... (6 Replies)
Discussion started by: ganeshd
6 Replies

8. Shell Programming and Scripting

Transpose column to row

Hi i have a file which has values seperated by "," as shown below and I want to transpose for every doc_id in one row. Input: DOC_ID,KEYWORD 105,REGISTROS 105,GEOLOGIA 105,NUCLEOS 105,EXPEDIENTE 105,PROGRAMAS 10025,EXPEDIENTE 10025,LOCALIZACIONES 10025,OFICIOS 10025,PROGRAMAS... (4 Replies)
Discussion started by: juelillo
4 Replies

9. Shell Programming and Scripting

How do I transpose a column of results to a row

Hi, Can anyone advise me what command I could use to display the results of the following command as a row. Thanks Gareth (6 Replies)
Discussion started by: m223464
6 Replies

10. Shell Programming and Scripting

Row to column transpose

Can we transpose rows to columns? Fields within row are separated by a comma. (10 Replies)
Discussion started by: videsh77
10 Replies
Login or Register to Ask a Question