Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Split 1 column into numerous columns based on patterns Post 302957590 by RudiC on Tuesday 13th of October 2015 06:11:22 AM
Old 10-13-2015
Try
Code:
awk '
BEGIN           {SRCH="NEW (PRODUCT|ITEM), VERSION 1.1"
                }

function        PRT()   {printf "\n"
                         for (i=1; i<=VMAX; i++)
                                {for (j=1; j<=FCNT; j++)
                                        printf "%s\t", PRTARR[FSQ[j],i]
                                 printf "\n"
                                }
                         delete PRTARR
                        }

$0 ~ SRCH       {if (NR > 1) PRT()
                 print
                 getline
                 print
                 VMAX = 0
                 FCNT = 0
                 next
                }

/^"PROD/        {next
                }

/^FIELD/        {IDX = $1
                 VCNT = 0
                 printf "%s\t", IDX
                 FSQ[++FCNT] = IDX
                 next
                }

IDX             {PRTARR[IDX,++VCNT] = $1
                 if (VCNT > VMAX) VMAX = VCNT
                }

END             {PRT()
                }
' file
"NEW PRODUCT, VERSION 1.1"
PRODUCT_01
FIELD_X FIELD_Y
11.11   22.22
11.22   22.33
11.33
11.44
"NEW PRODUCT, VERSION 1.1"
PRODUCT_02
FIELD_X FIELD_Y FIELD_Z
33.33   44.44   55.55

This User Gave Thanks to RudiC For This Post:
 

10 More Discussions You Might Find Interesting

1. Web Development

split the fields in a column into 3 columns

Have a column "address" which is combination of city, region and postal code like. Format is : city<comma><space>region<space>postal code abc, xyz 123456 All these three city, region and postal code are not mandatory. There can be any one of the above. In that case a nell... (2 Replies)
Discussion started by: rakshit
2 Replies

2. UNIX for Dummies Questions & Answers

split one column into multiple columns

hey guys... Im looking to do the following: 1 2 3 4 5 6 7 8 9 Change to: 1 4 7 2 5 8 3 6 9 Did use | perl -lpe'$\=$.%3?$":"\n"' , but it doesnt give me the matrix i want. (3 Replies)
Discussion started by: zaneded
3 Replies

3. Shell Programming and Scripting

split one column into multiple columns

hey, i have the following data: 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 (7 Replies)
Discussion started by: zaneded
7 Replies

4. Shell Programming and Scripting

Split into columns based on the parameter and use & as delimiter

Here is my source, i have million lines like this on a file. disp0201.php?poc=4060&roc=1&ps=R&ooc=13&mjv=6&mov=5&rel=5&bod=155&oxi=2&omj=5&ozn=1&dav=20&cd=&daz=& drc=&mo=&sid=&lang=EN&loc=JPN I want to split this into columns in order to load in database, anything starts with"&mjv=6" as first... (13 Replies)
Discussion started by: elamurugu
13 Replies

5. Shell Programming and Scripting

Split the file based on column

Hi, I have a file sample_1.txt (300k rows) which has data like below: * Also each record is around 64k bytes 11|1|abc|102553|125589|64k bytes of data 10|2|def|123452|123356|...... 13|2|geh|144351|121123|... 25|4|fgh|165250|118890|.. 14|1|abc|186149|116657|......... (6 Replies)
Discussion started by: sol_nov
6 Replies

6. UNIX for Dummies Questions & Answers

Split file based on column

i have file1.txt asdas|csada|130310|0423|A1|canberra sdasd|sfdsf|130426|2328|A1|sydney Expected output : on eaceh third and fourth colum, split into each two characters asdas|csada|13|03|10|04|23|A1|canberra sdasd|sfdsf|13|04|26|23|28|A1|sydney (10 Replies)
Discussion started by: radius
10 Replies

7. Shell Programming and Scripting

awk to sum a column based on duplicate strings in another column and show split totals

Hi, I have a similar input format- A_1 2 B_0 4 A_1 1 B_2 5 A_4 1 and looking to print in this output format with headers. can you suggest in awk?awk because i am doing some pattern matching from parent file to print column 1 of my input using awk already.Thanks! letter number_of_letters... (5 Replies)
Discussion started by: prashob123
5 Replies

8. UNIX for Dummies Questions & Answers

File merging based on column patterns

Hello :) I am in this situation: Input: two tab-delimited files, `File1` and `File2`. `File2` (`$2`) has to be parsed by patterns found in `File1` (`$1`). Expected output: tab-delimited file, `File3`. `File3` has to contain the same rows as `File2`, plus the corresponding value in... (5 Replies)
Discussion started by: dovah
5 Replies

9. UNIX for Beginners Questions & Answers

How to split a column based on |?

Hi all, Newbie here, so please bear over with my stupid question :) I have used far too long time today on figuring this out, so I hope that someone here can help me move on. I have some annotation data for a transcriptome where I want to split a column containing NCBI accession IDs into a... (7 Replies)
Discussion started by: BioBing
7 Replies

10. UNIX for Beginners Questions & Answers

Using awk to split a column into two columns

Hi, I am trying to split the following output into two columns, where each column has Source: Destination: OUTPUT TO FILTER $ tshark -r Capture_without_mtr.pcap -V | awk '/ (Source|Destination): /' | more Source: x.x.x.x Destination: x.x.x.x Source:... (2 Replies)
Discussion started by: sand1234
2 Replies
Array(3pm)						User Contributed Perl Documentation						Array(3pm)

NAME
Test::Data::Array -- test functions for array variables SYNOPSIS
use Test::Data qw(Array); DESCRIPTION
Functions array_any_ok( ITEM, ARRAY [, NAME] ) Ok if any element of ARRAY is ITEM. array_none_ok( ITEM, ARRAY [, NAME] ) Ok if no element of ARRAY is ITEM. array_once_ok( ITEM, ARRAY [, NAME] ) Ok if only one element of ARRAY is ITEM. array_multiple_ok( ITEM, ARRAY [, NAME] ) Ok if more than one element of ARRAY is ITEM. array_max_ok( NUMBER, ARRAY [, NAME] ) Ok if all elements of ARRAY are numerically less than or equal to NUMBER. array_min_ok( NUMBER, ARRAY [, NAME] ) Ok if all elements of ARRAY are numerically greater than or equal to NUMBER. array_maxstr_ok( ITEM, ARRAY [, NAME] ) Ok if all elements of ARRAY are asciibetically less than or equal to MAX. array_minstr_ok( ITEM, ARRAY [, NAME] ) Ok if all elements of ARRAY are asciibetically greater than or equal to MAX. array_sum_ok( SUM, ARRAY [, NAME] ) Ok if the numerical sum of ARRAY is SUM. array_empty_ok( ARRAY [, NAME] ) Ok if the array contains no elements. array_length_ok( ARRAY, LENGTH [, NAME] ) Ok if the array contains LENGTH number of elements. array_sortedstr_ascending_ok( ARRAY, [, NAME] ) Ok if each succeeding element is asciibetically greater than or equal to the one before. array_sortedstr_descending_ok( ARRAY, [, NAME] ) Ok if each succeeding element is asciibetically less than or equal to the one before. array_sorted_ascending_ok( ARRAY, [, NAME] ) Ok if each succeeding element is numerically greater than or equal to the one before. array_sorted_descending_ok( ARRAY, [, NAME] ) Ok if each succeeding element is numerically less than or equal to the one before. SEE ALSO
Test::Data, Test::Data::Scalar, Test::Data::Function, Test::Data::Hash, Test::Builder SOURCE AVAILABILITY
This source is in Github: http://github.com/briandfoy/test-data/tree/master AUTHOR
brian d foy, "<bdfoy@cpan.org>" COPYRIGHT AND LICENSE
Copyright (c) 2002-2009 brian d foy. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.14.2 2009-02-12 Array(3pm)
All times are GMT -4. The time now is 06:05 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy