Comma delimited row into multiple rows, repeat first value


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Comma delimited row into multiple rows, repeat first value
# 1  
Old 09-28-2011
Comma delimited row into multiple rows, repeat first value

i am building a database to keep track of unix groups.

Using the command "ypcat group"

I get an output similar to the following

Code:
group1:GROUP:9999:user1,user2,user3
groupA:GROUP:1111:usera,userb,userc

I want to convert this output so it looks like this
Code:
group1:user1
group1:user2
group1:user3
groupA:usera
groupA:userb
groupA:userc

using two sed commands i've gotten to this point

Code:
ypcat group | sed 's#:.*:.*:#:\n#g' | sed 's#,#\n#g'
This gets me to here:
group1:
user1
user2
user3
groupA:
usera
userb
userc

I know there is a way to preappend the group lines to the other lines with the hold function in sed but i can't seem to get it right. There is also probably an awk command to accomplish this.
The sed command should look similar to this but it has no affect:
Code:
sed '#:#{hd}G'

Moderator's Comments:
Mod Comment Video tutorial on how to use code tags in The UNIX and Linux Forums.

Last edited by radoulov; 09-28-2011 at 05:30 PM..
# 2  
Old 09-28-2011
Code:
$
$ cat f28
group1:GROUP:9999:user1,user2,user3
groupA:GROUP:1111:usera,userb,userc
$
$
$ perl -lne 'do {foreach (split /,/,$2) {print $1,":",$_}} if /^(.*?):.*:(.*?)$/' f28
group1:user1
group1:user2
group1:user3
groupA:usera
groupA:userb
groupA:userc
$
$

tyler_durden
# 3  
Old 09-28-2011
With awk:

Code:
ypcat group |
  awk -F'[:,]' '{
    for (i = 3; ++i <= NF;)
      print $1, $i
    }' OFS=:

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Splitting single row into multiple rows based on for every 10 digits of last field of the row

Hi ALL, We have requirement in a file, i have multiple rows. Example below: Input file rows 01,1,102319,0,0,70,26,U,1,331,000000113200000011920000001212 01,1,102319,0,1,80,20,U,1,241,00000059420000006021 I need my output file should be as mentioned below. Last field should split for... (4 Replies)
Discussion started by: kotra
4 Replies

2. Shell Programming and Scripting

Help/Advise please for converting space delimited string variable to comma delimited with quote

Hi, I am wanting to create a script that will construct a SQL statement based on a a space delimited string that it read from a config file. Example of the SQL will be For example, it will read a string like "AAA BBB CCC" and assign to a variable named IN_STRING. I then concatenate... (2 Replies)
Discussion started by: newbie_01
2 Replies

3. 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

4. Shell Programming and Scripting

Converting a single row to multiple rows

Hi, I want to convert a single row values to multiple rows, but the no. of rows are not fixed. For example, I have a row as below abc-def-lmn-mno-xyz out put should be get abc get def get lmn get xyz (4 Replies)
Discussion started by: Suneel Mekala
4 Replies

5. Shell Programming and Scripting

Need a script to convert comma delimited files to semi colon delimited

Hi All, I need a unix script to convert .csv files to .skv files (changing a comma delimited file to a semi colon delimited file). I am a unix newbie and so don't know where to start. The script will be scheduled using cron and needs to convert each .csv file in a particular folder to a .skv... (4 Replies)
Discussion started by: CarpKing
4 Replies

6. Shell Programming and Scripting

How to merge multiple rows into single row if first column matches ?

Hi, Can anyone suggest quick way to get desired output? Sample input file content: A 12 9 A -0.3 2.3 B 1.0 -4 C 34 1000 C -111 900 C 99 0.09 Output required: A 12 9 -0.3 2.3 B 1.0 -4 C 34 1000 -111 900 99 0.09 Thanks (3 Replies)
Discussion started by: cbm_000
3 Replies

7. Shell Programming and Scripting

Converting Multiple rows to Single Row using unix commands

Can somebody help me in solving this.. Input data is like 0 A 1 B 2 C 3 D 0 A1 1 B1 2 C1 3 D1 0 A2 1 B2 2 C2 3 D2 Output should be like A B C D A1 B1 C1 D1 A2 B2 C2 D2 (7 Replies)
Discussion started by: Mahantesh Patil
7 Replies

8. Shell Programming and Scripting

Spliting a row to multiple rows using shell script

Please advice script for changing from A to B I'd like to Split a row to multiple rows with 4 columns using shell script. The data of the file is in one row as below that is 28Mbyte size. A> cto10001 0000000 201010 10:52:13 cto10001 0000000 201011 10:52:13 cto10001 0000000 201011 10:52:13... (2 Replies)
Discussion started by: ianpapa
2 Replies

9. Shell Programming and Scripting

How do you delete multiple text from a comma delimited file

I would like to know code that will delete multiple text from a comma delimited file. For example, how would the comma delimited file below delete the word 'PEST' in Perl language (previously an excel file that was converted to a csv and the last column was PEST): 1, 2,43,34, bosx,PEST 1,... (1 Reply)
Discussion started by: dolo21taf
1 Replies

10. Shell Programming and Scripting

a bit tricky to change it multiple rows in one row and ...

Hi, I have an output file like: 1415971694 376 (12); 3434327831 376 (7); 2989082873 332 (3); 4075357577 332 (3); 1221064374 376 (2); 2372410470 376 (2); 2563564778 332 (2); 443221432 376 (1); ... (2 Replies)
Discussion started by: netbanker
2 Replies
Login or Register to Ask a Question