Transpose recursively into delimited file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Transpose recursively into delimited file
# 1  
Old 11-21-2012
Transpose recursively into delimited file

I would like to write a script that takes something like this:
Code:
Line 1
Line 2
Line 3
Line 4
[Blank line]
Line 6
Line 7
Line 8
Line 9
[Blank line]
etc....

And makes it to look like this:
Code:
Line 1|Line 2|Line 3|Line 4|[Blank line, if it's easier]
Line 6|Line 7|Line 8|Line 9|[Blank line, if it's easier]

etc.

I would think it would be fairly easy to use two loops, one for the the 5-line pattern and one for each set of 5 lines. However, I am having trouble planning out the code because if I create a loop within the loop, I have problems figuring out how to control which line to read. Any suggestions?
Perhaps have a loop that would create 1 super long line but insert a counter to insert a line break every 5 lines?

Last edited by Scrutinizer; 11-22-2012 at 09:59 PM.. Reason: code tags
# 2  
Old 11-21-2012
You could use awk to do this:

Code:
awk '{$1=$1}1' FS="\n" RS= OFS=\| infile

Or with paste:

Code:
paste -d\| - - - - - < infile


Last edited by Chubler_XL; 11-21-2012 at 08:15 PM..
# 3  
Old 11-22-2012
Can you explain what each component of the awk stmt means?
I am getting an error message:

Code:
awk: syntax error at source line 1
context is
     >>> {$1=$1}1 <<<
awk: bailing out at source line 1

(This was issued as a command, not as part of a script)

The paste command worked perfectly...actually too perfectly...because I found out that there are a few anomalies in the line sequences. Towards the end of the 50,000 lines in the file, the pattern changes to this:

Code:
Line A
Line B

Line C
Line D

And then it reverts back to the original pattern after those 2 sequences. I don't know why that's the case, but it's there.

You don't happen to know of any way to avoid that pothole, do you? (This is more wishful thinking)

Thanks for your help.

---------- Post updated at 12:31 PM ---------- Previous update was at 12:28 PM ----------

Oh I think if I can remove all blank lines in the file, then do a 4-line sequence, that should work as the 2-line sequences were actually halves of the 4-line sequence. So in light of that, how can I remove all blank lines from a file?

Last edited by Scrutinizer; 11-22-2012 at 09:56 PM.. Reason: code tags
# 4  
Old 11-22-2012
The awk commands are probably because you are on Solaris, if so try nawk instead of awk. The awk solution uses blank lines to align so your two anomalies will come out as:
Code:
Line A|Line B
Line C|Line D

But this should avoid getting out of sync for the rest of the file which is probably safer in case of other issues like this at a later date.

If you want to stick with paste you can use grep -v "^$" infile > outfile to remove blank lines, and don't forget to remove one of the dashes from the paste arguments to reduce to a 4-line sequence.
# 5  
Old 11-22-2012
If not all empty lines are completely empty but some may contain spaces then instead of grep you could use:
Code:
awk NF file

You could then try running it through paste like Chubler suggests:
Code:
awk NF infile | paste -d\| - - - -

--
On Solaris < version 11 use /usr/xpg4/bin/awk or nawk rather than awk

Last edited by Scrutinizer; 11-22-2012 at 10:13 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace a column in tab delimited file with column in other tab delimited file,based on match

Hello Everyone.. I want to replace the retail col from FileI with cstp1 col from FileP if the strpno matches in both files FileP.txt ... (2 Replies)
Discussion started by: YogeshG
2 Replies

2. Shell Programming and Scripting

Transpose comma delimited data in rows to columns

Hello, I have a bilingual database with the following structure a,b,c=d,e,f The right half is in a Left to right script and the second is in a Right to left script as the examples below show What I need is to separate out the database such that the first word on the left hand matches the first... (4 Replies)
Discussion started by: gimley
4 Replies

3. UNIX for Dummies Questions & Answers

Need to convert a pipe delimited text file to tab delimited

Hi, I have a rquirement in unix as below . I have a text file with me seperated by | symbol and i need to generate a excel file through unix commands/script so that each value will go to each column. ex: Input Text file: 1|A|apple 2|B|bottle excel file to be generated as output as... (9 Replies)
Discussion started by: raja kakitapall
9 Replies

4. Shell Programming and Scripting

How to make tab delimited file to space delimited?

Hi How to make tab delimited file to space delimited? in put file: ABC kgy jkh ghj ash kjl o/p file: ABC kgy jkh ghj ash kjl Use code tags, thanks. (1 Reply)
Discussion started by: jagdishrout
1 Replies

5. Shell Programming and Scripting

awk read one delimited file, search another delimited file

Hello folks, I have another doozy. I have two files. The first file has four fields in it. These four fields map to different locations in my second file. What I want to do is read the master file (file 2 - 23 fields) and compare each line against each record in file 1. If I get a match in all four... (4 Replies)
Discussion started by: dagamier
4 Replies

6. Shell Programming and Scripting

Help with converting Pipe delimited file to Tab Delimited

I have a file which was pipe delimited, I need to make it tab delimited. I tried with sed but no use cat file | sed 's/|//t/g' The above command substituted "/t" not tab in the place of pipe. Sample file: abc|123|2012-01-30|2012-04-28|xyz have to convert to: abc 123... (6 Replies)
Discussion started by: karumudi7
6 Replies

7. Shell Programming and Scripting

How to convert a space delimited file into a pipe delimited file using shellscript?

Hi All, I have space delimited file similar to the one as shown below.. I need to convert it as a pipe delimited, the values inside the pipe delimited file should be as highlighted... AA ATIU2345098809 009697 005374 BB ATIU2345097809 005445 006518 CC ATIU9685098809 003215 003571 DD... (7 Replies)
Discussion started by: nithins007
7 Replies

8. Shell Programming and Scripting

convert a pipe delimited file to a':" delimited file

i have a file whose data is like this:: osr_pe_assign|-120|wg000d@att.com|4| osr_evt|-21|wg000d@att.com|4| pe_avail|-21|wg000d@att.com|4| osr_svt|-11|wg000d@att.com|4| pe_mop|-13|wg000d@att.com|4| instar_ready|-35|wg000d@att.com|4| nsdnet_ready|-90|wg000d@att.com|4|... (6 Replies)
Discussion started by: priyanka3006
6 Replies

9. UNIX for Dummies Questions & Answers

Converting Space delimited file to Tab delimited file

Hi all, I have a file with single white space delimited values, I want to convert them to a tab delimited file. I tried sed, tr ... but nothing is working. Thanks, Rajeevan D (16 Replies)
Discussion started by: jeevs81
16 Replies

10. Shell Programming and Scripting

Converting Tab delimited file to Comma delimited file in Unix

Hi, Can anyone let me know on how to convert a Tab delimited file to Comma delimited file in Unix Thanks!! (22 Replies)
Discussion started by: charan81
22 Replies
Login or Register to Ask a Question