Visit Our UNIX and Linux User Community


Split columns into rows


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Split columns into rows
# 1  
Old 03-28-2016
Code Split columns into rows

Any one can help me in converting columns into rows.
example
I have input file

Code:
10000|[12080000000]
10002|[13075200000]
10003|[13939200000]
10004|[1347200000,133600000,1152000000,106400000,12800000,117200000,145180000,1451000000,148400000,14240000]
10005|[16000000]

I want output in below format
Code:
PARTY|PART_DT
10000|12080000000
10002|13075200000
10003|13939200000
10004|1347200000
10004|133600000
10004|1152000000
10004|106400000
10004|12800000
10004|117200000
10004|145180000
10004|1451000000
10004|148400000
10004|14240000
10005|16000000

# 2  
Old 03-28-2016
Hello syd,

Welcome to the forums, special thanks for using code tags for your code/inputs/samples into your post. Following may help you in same.
Code:
awk -F"|" 'BEGIN{print "PARTY|PART_DT"} {gsub(/\[|\]/,X,$NF);num=split($NF, array,",");for(i=1;i<=num;i++){print $1 OFS array[i]}}' OFS="|"  Input_file

Output will be as follows.
Code:
PARTY|PART_DT
10000|12080000000
10002|13075200000
10003|13939200000
10004|1347200000
10004|133600000
10004|1152000000
10004|106400000
10004|12800000
10004|117200000
10004|145180000
10004|1451000000
10004|148400000
10004|14240000
10005|16000000

Thanks,
R. Singh
This User Gave Thanks to RavinderSingh13 For This Post:
# 3  
Old 03-28-2016
Also try :

Code:
[akshay@localhost tmp]$ cat file.txt 
10000|[12080000000]
10002|[13075200000]
10003|[13939200000]
10004|[1347200000,133600000,1152000000,106400000,12800000,117200000,145180000,1451000000,148400000,14240000]
10005|[16000000]

Code:
[akshay@localhost tmp]$ awk -F\| 'BEGIN{print "PARTY|PART_DT"}{gsub(/[\[\]]/,""); gsub(/,/,"\n"$1"|")}1' file.txt

Output
Code:
PARTY|PART_DT
10000|12080000000
10002|13075200000
10003|13939200000
10004|1347200000
10004|133600000
10004|1152000000
10004|106400000
10004|12800000
10004|117200000
10004|145180000
10004|1451000000
10004|148400000
10004|14240000
10005|16000000

This User Gave Thanks to Akshay Hegde For This Post:
# 4  
Old 03-28-2016
Hi Ravinder and Akshay

its working.thanks for you prompt reply.

Code:
10000|latDate:1442457679000|lat:-99
10001|latDate:1448538549000|lat:3213374
10002|latDate:144558585|lat:34848006
10004|latDate:1442455248000|lat:35872402070386
10005|latDate:35193106096435


in above input file I have -99 value.

if iam using grep value
grep -o 'lat:\w\+' input.txt

iam getting only positive value , if not negative value

output file

lat:3213374
lat:34848006
lat:35872402070386

can you please let me know how to fetch negative value by using
grep -o 'lat:\w\+' input.txt command

Last edited by syd; 03-28-2016 at 09:09 AM..
# 5  
Old 03-28-2016
Something like this

Code:
[akshay@localhost tmp]$ cat f
10000|latDate:1442457679000|lat:-99
10001|latDate:1448538549000|lat:3213374
10002|latDate:144558585|lat:34848006
10004|latDate:1442455248000|lat:35872402070386
10005|latDate:35193106096435

[akshay@localhost tmp]$ grep -Po 'lat:.*' f
lat:-99
lat:3213374
lat:34848006
lat:35872402070386

---------- Post updated at 06:52 PM ---------- Previous update was at 06:47 PM ----------

lat: matches the characters lat: literally (case sensitive)
.* matches any character (except newline)
# 6  
Old 03-28-2016
Hi Akshay,

its not working if I have any columns next to negative value, its fetching all value .
# 7  
Old 03-28-2016
Ok, try this

Code:
[akshay@localhost tmp]$ cat f
10000|latDate:1442457679000|lat:-99|co1|c2
10001|latDate:1448538549000|lat:3213374
10002|latDate:144558585|lat:34848006
10004|latDate:1442455248000|lat:35872402070386
10005|latDate:35193106096435

[akshay@localhost tmp]$ grep -oP 'lat:[-+]?\w+' f
lat:-99
lat:3213374
lat:34848006
lat:35872402070386

---------- Post updated at 07:03 PM ---------- Previous update was at 06:59 PM ----------

Code:
lat:[-+]?\w+

lat: matches the characters lat: literally (case sensitive)
[-+]? match a single character present in the list below
Quantifier: ? Between zero and one time, as many times as possible
\w+ match any word character [a-zA-Z0-9_]

Previous Thread | Next Thread
Test Your Knowledge in Computers #131
Difficulty: Easy
UNIX certification is based on the 'Single Unix Specification' which is an extension of IEEE 1003 (POSIX).
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Split multi columns line to 2 columns

I have data like this 1 a,b,c 2 a,c 3 b,d 4 e,f would like convert like this 1 a 1 b 1 c 2 a 2 c 3 b 3 d 4 e 4 f Please help me out (4 Replies)
Discussion started by: jhonnyrip
4 Replies

2. Shell Programming and Scripting

How to split all columns into multiple columns?

Hi, all. How can I split all columns into multiple columns separated by tab? Input: qq ee TT 12 m1 aa gg GG 34 2u zz dd hh 56 4h ww cc JJ 78 5y ss ff kk 90 j8 xx pp mm 13 p0 Output: q q e e T T 1 2 m 1 a a g g G G 3 4 2 u z z d d h h 5 6 4 h w w c c J J 7 8 5 y (8 Replies)
Discussion started by: huiyee1
8 Replies

3. Shell Programming and Scripting

awk split columns after matching on rows and summing the last column

input: chr1 1 2 3 chr1 1 2 4 chr1 2 4 5 chr2 3 6 9 chr2 3 6 10 Code: awk '{a+=$4}END{for (i in a) print i,a}' input Output: chr112 7 chr236 19 chr124 5 Desired output: chr1 1 2 7 chr2 3 6 19 chr1 2 4 5 (1 Reply)
Discussion started by: jacobs.smith
1 Replies

4. Shell Programming and Scripting

Compare 2 csv files by columns, then extract certain columns of matcing rows

Hi all, I'm pretty much a newbie to UNIX. I would appreciate any help with UNIX coding on comparing two large csv files (greater than 10 GB in size), and output a file with matching columns. I want to compare file1 and file2 by 'id' and 'chain' columns, then extract exact matching rows'... (5 Replies)
Discussion started by: bkane3
5 Replies

5. Shell Programming and Scripting

Evaluate 2 columns, add sum IF two columns match on two rows

Hi all, I know this sounds suspiciously like a homework course; but, it is not. My goal is to take a file, and match my "ID" column to the "Date" column, if those conditions are true, add the total number of minutes worked and place it in this file, while not printing the original rows that I... (6 Replies)
Discussion started by: mtucker6784
6 Replies

6. Shell Programming and Scripting

Deleting all the fields(columns) from a .csv file if all rows in that columns are blanks

Hi Friends, I have come across some files where some of the columns don not have data. Key, Data1,Data2,Data3,Data4,Data5 A,5,6,,10,, A,3,4,,3,, B,1,,4,5,, B,2,,3,4,, If we see the above data on Data5 column do not have any row got filled. So remove only that column(Here Data5) and... (4 Replies)
Discussion started by: ks_reddy
4 Replies

7. Shell Programming and Scripting

split paste them in rows

Hi, I have a file as ABC 123_456_789 234_678_901 XYZ 1100_1250_1580_1680 1175_1440_1620_1890 so on What I want my output file to look is "split by underscore and then place the contents in rows" output ABC 123 234 ABC 456 678 ABC 789 901 XYZ 1100 1175 XYZ 1250 1440... (3 Replies)
Discussion started by: Diya123
3 Replies

8. Shell Programming and Scripting

Split single rows to multiple rows ..

Hi pls help me out to short out this problem rm PAB113_011.out rm: PAB113_011.out: override protection 644 (yes/no)? n If i give y it remove the file. But i added the rm command as a part of ksh file and i tried to remove the file. Its not removing and the the file prompting as... (7 Replies)
Discussion started by: sri_aue
7 Replies

9. Shell Programming and Scripting

Split rows

Hi all, I need a simple bin/sh script FILE1: ab1 gegege swgdeyedg ac2 jxjjxjxjxxjxjx ad3 ae4 xjxjxj zhzhzh ahahs af5 sjsjsjs ssjsjsjsj sjsjsj ag6 shshshshs sjjssj shhshshs myScript.sh has to return: ROW ab1 ROW ac2 ROW ad3 ROW ae4 In other words: "ROW " + the first world... (3 Replies)
Discussion started by: ric79
3 Replies

10. Shell Programming and Scripting

split rows

Hi I wanted to split rows based on the number of 1's present in 21st field(21st field is 40 length field) so I wrote the below awk code. However, the tool that I am using to invoke the command is not recognising the command. So, could you please help me to translate this command to sed? awk... (5 Replies)
Discussion started by: ahmedwaseem2000
5 Replies

Featured Tech Videos