Visit The New, Modern Unix Linux Community


Split values using awk


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Split values using awk
# 1  
Split values using awk

Hi Team
I am looking for easiest way in python or perl to convert the field values from two columns
The file contains Name,Company Worked(Separated by ; between each fields. It can have multiple fields )
$cat Check_File
Code:
Name , Company_Worked (Header)
Asley,IBM;Amazon;BOA;Google
King.Jr,Wipro;Microsoft;AMZ

Expected format :
Code:
Name , Company_Worked (Header)
Asley, IBM
Asley, Amazon
Asley, BOA
Asley, Google   
King.Jr, Wipro
King.Jr, Microsoft
King.Jr, AMZ

I tried using AWK but I will have to use 2 AWK to after splitting 2 column values .
Code:
awk -v RS="," '{print}' Check_File  > /tmp/Modified_File

Is there better way to handle this via loop using AWK and get the results faster . Any help appreciated.
# 2  
Code:
$ cat ~/tmp.dat
Name , Company_Worked (Header)
Asley,IBM;Amazon;BOA;Google
King.Jr,Wipro;Microsoft;AMZ

$ perl -ne 'chomp;($name,$emp)=split/,/;for (split/;/,$emp){print "$name, $_\n";}' ~/tmp.dat
Name ,  Company_Worked (Header)
Asley, IBM
Asley, Amazon
Asley, BOA
Asley, Google
King.Jr, Wipro
King.Jr, Microsoft
King.Jr, AMZ

This User Gave Thanks to Skrynesaver For This Post:
# 3  
Or, awk:
Code:
awk -F"[,;]+" 'NR == 1 {print; next} {for (i=2; i<=NF; i++) print $1, " " $i}' OFS=, file
Name , Company_Worked (Header)
Asley, IBM
Asley, Amazon
Asley, BOA
Asley, Google
King.Jr, Wipro
King.Jr, Microsoft
King.Jr, AMZ

These 2 Users Gave Thanks to RudiC For This Post:
# 4  
Hi
How about sed?
Code:
sed -r ':1;s/^([^,]+)\s*,\s*([^;]+);/\1, \2\n\1, /;t1' file
Name , Company_Worked (Header)
Asley, IBM
Asley, Amazon
Asley, BOA
Asley, Google
King.Jr, Wipro
King.Jr, Microsoft
King.Jr, AMZ

--- Post updated at 19:57 ---

If it turns out that a person works in only one company, then there will be no space after the decimal point.
Fix it
Code:
sed -r '1b;:1;s/^([^,]+,)([^;]*);/\1\2\n\1/;t1;s/,/& /g' file
Name , Company_Worked (Header)
Olesya, Housewife
Asley, IBM
Asley, Amazon
Asley, BOA
Asley, Google
King.Jr, Wipro
King.Jr, Microsoft
King.Jr, AMZ

This User Gave Thanks to nezabudka For This Post:
# 5  
A shell script with only shell builtins:
Code:
#!/bin/sh
set -f # unquoted $f2
IFS=";"
while IFS="," read f1 f2
do
  printf "$f1, %s\n" $f2
done < file

This User Gave Thanks to MadeInGermany For This Post:

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #856
Difficulty: Medium
React was created by Jordan Renke, a software engineer at Facebook.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Split a content in a file with specific interval base on the delimited values using UNIX command

Hi All, we have a requirement to split a content in a text file every 5 rows and write in a new file . conditions: if 5th line falls between center of the statement . it should look upto after ";" files are below format: 1 UPDATE TABLE TEST1 SET VALUE ='AFDASDFAS' 2 WHERE... (3 Replies)
Discussion started by: KK230689
3 Replies

2. Shell Programming and Scripting

awk file to read values from Db2 table replacing hard coded values

Hi, I want to replace a chain of if-else statement in an old AWK file with values from Db2 table or CSV file. The part of code is below... if (start_new_rec=="true"){ exclude_user="false"; user=toupper($6); match(user, "XXXXX."); if (RSTART ==2 ) { ... (9 Replies)
Discussion started by: asandy1234
9 Replies

3. Shell Programming and Scripting

Split file according to column values

Hi all, I am trying to split a file by the values of the FIRST column. The following awk works to split the file by the value of the LAST column -- How can I alter this to divide the column by the FIRST column?? awk -F"\t" '{ print > $NF ; close($NF)}' filename1Thanks! (5 Replies)
Discussion started by: owwow14
5 Replies

4. Shell Programming and Scripting

Shell Script:split the values

Hi, I have file like below as file.txt Linux sptpp1a 2.6.18 348.1.1.el5 xxxxx 05/02/2013 %usr %sys %wio %idle 14:18:30 0 1 0 99 14:18:40 1 1 0 98 14:18:50 1 1 0 98 14:19:00 ... (5 Replies)
Discussion started by: Mani_apr08
5 Replies

5. Shell Programming and Scripting

awk to split one field and print the last two fields within the split part.

Hello; I have a file consists of 4 columns separated by tab. The problem is the third fields. Some of the them are very long but can be split by the vertical bar "|". Also some of them do not contain the string "UniProt", but I could ignore it at this moment, and sort the file afterwards. Here is... (5 Replies)
Discussion started by: yifangt
5 Replies

6. Shell Programming and Scripting

Split the values

ABC|DFE HYK|YUI is the contents in file. I am using the for loop for for value_list in `cat ./file` ; do echo $value_list cat use_firstvalue > second_value done I have to split the based on '|' and it should be used as a varaible in the cat command. How to do that. Please help me... (3 Replies)
Discussion started by: sandy1028
3 Replies

7. Shell Programming and Scripting

AWK: read values from file1; search for values in file2

I have read another post about this issue and am wondering how to adapt it to my own, much simpler, issue. I have a file of user IDs like so: 333333 321321 546465 ...etc I need to take each number and use it to print records wherein the 5th field matches the user ID pulled from the... (2 Replies)
Discussion started by: Bubnoff
2 Replies

8. Shell Programming and Scripting

How to pick values from column based on key values by usin AWK

Dear Guyz:) I have 2 different input files like this. I would like to pick the values or letters from the inputfile2 based on inputfile1 keys (A,F,N,X,Z). I have done similar task by using awk but in that case the inputfiles are similar like in inputfile2 (all keys in 1st column and values in... (16 Replies)
Discussion started by: repinementer
16 Replies

9. Shell Programming and Scripting

split variable values into array

i have these values inside variable $blah BUNGA TERATAI 3 5055 ITH 1 0 0 0 1 1 JADE TRADER 143W ITH 4 0 0 0 4 4 MOL SPLENDOR 0307A ITH 3 0 0 0 3 3 so how do I split them into array with the... (4 Replies)
Discussion started by: finalight
4 Replies

10. UNIX for Dummies Questions & Answers

Split a file with no pattern -- Split, Csplit, Awk

I have gone through all the threads in the forum and tested out different things. I am trying to split a 3GB file into multiple files. Some files are even larger than this. For example: split -l 3000000 filename.txt This is very slow and it splits the file with 3 million records in each... (10 Replies)
Discussion started by: madhunk
10 Replies

Featured Tech Videos