Visit Our UNIX and Linux User Community


Tab Delimiter to csv in python:perl


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Tab Delimiter to csv in python:perl
# 1  
Old 04-30-2020
Tab Delimiter to csv in python:perl

Hi
How do we handle delimiter values in python or perl to convert the field values from 3 columns to 2 columns into csv file

Columns Values

Product : Contain one value
ID : Ignore this
Features : Contains multiple values separated by tab

$cat Check_File
Code:
Product                ID                   Features 
Apple-for-Laptop 1.2.13.22 itunes app-stores health    # [ Product1 ]
Samsung-for-Mobile 5.43.67  music play-store long-battery    # [ Product2 ]
Nokia 4.1.2 long-battery    # [ Product3 ]


Expected format :
Code:
Product, Features
Apple-for-Laptop,itunes
Apple-for-Laptop,app-stores
Apple-for-Laptop,health   
Samsung-for-Mobile,music 
Samsung-for-Mobile,play-store 
Samsung-for-Mobile,long-battery 
Nokia,long-battery

Is there better way to handle this in python/perl . The file is big with 200 Million records.
# 2  
Old 04-30-2020
Quote:
Originally Posted by Perlbaby
.
.
.
Is there better way to handle this in python/perl . The file is big with 200 Million records.
Better than what? Any attempts / ideas / thoughts from your side?


This or this may come close to what you need.
# 3  
Old 04-30-2020
Have tried with below option but looks like i am missing something as multiple lines are not getting picked as per expected format in thread

Code:
#!/bin/sh
set -f # unquoted $f3
IFS='[\t]'
while IFS=" " read f1 f3
do
printf "$f1, %s\n" $f2
done <   Check_File

# 4  
Old 04-30-2020
Quote:
Originally Posted by Perlbaby
Have tried with below option but looks like i am missing something as multiple lines are not getting picked as per expected format in thread

Code:
#!/bin/sh
set -f # unquoted $f3
IFS='[\t]'
while IFS=" " read f1 f3
do
printf "$f1, %s\n" $f2
done <   Check_File


That is close - try this
Code:
while read product id features
do
    printf "${product}, %s\n" ${features%#*}
 done <  Check_File

Your example was using only two variables (f1, f3) to read the fields but using a different one (f2) to print. You were also not deleting the comment at the end of each line.


Andrew
This User Gave Thanks to apmcd47 For This Post:
# 5  
Old 05-01-2020
Yes this works .
How to transfer the print output to another path or file Ex : /tmp/new_file
I tried using echo , but if i run the code multiple times , the results are getting appended with existing results and doubling up.
Instead of printing in below code - How to ensure the results here are moved to /tmp/new_file . Even with multiple runs , only the latest results should be moved to new/file.

Quote:
while read product id features
do
printf "${product}, %s\n" ${features%#*}
done < Check_File
# 6  
Old 05-01-2020
Redirection works identical for input as well as for output. Try
Code:
$ mv /tmp/new_file /tmp/old_file
$ while read product id features
     do    printf "${product}, %s\n" ${features%#*}
     done < Check_File >/tmp/new_file

These 2 Users Gave Thanks to RudiC For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #112
Difficulty: Easy
macOS was not the largest Unix largest installed base in 2017.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl Code to change file delimiter (passed as argument) to bar delimiter

Hi, Extremely new to Perl scripting, but need a quick fix without using TEXT::CSV I need to read in a file, pass any delimiter as an argument, and convert it to bar delimited on the output. In addition, enclose fields within double quotes in case of any embedded delimiters. Any help would... (2 Replies)
Discussion started by: JPB1977
2 Replies

2. Shell Programming and Scripting

CSV Delimiter Settings

Hi All, I am really new to Shell Scripting and would appreciate any help here. I have a script that runs throguh a cron job on a daily basis, problem is when the file is attached and e-mailed, it uses a comma delimiter to seperate fields. How can I prevent the script from using a comma... (2 Replies)
Discussion started by: SalientAnimal
2 Replies

3. Shell Programming and Scripting

Compare two tab-delimiter files

Hi, I have two files like: file1 chr1 40 chr1 50 chr2 10 chr2 60 file2 chr1 30 chr1 50 chr2 15 chr2 20 and want to get the difference of column 2 when column 1 is the same in both files. (4 Replies)
Discussion started by: linseyr
4 Replies

4. UNIX for Dummies Questions & Answers

Making a Tab delimiter file to Comma

How can i make a tab delimiter file to a comma delimiter??? (13 Replies)
Discussion started by: saggiboy10
13 Replies

5. UNIX for Dummies Questions & Answers

set output delimiter as tab in cut command

I can not make it work, it prints \t rather than introduce tabs. cut -d "," -f 4,8 Samples.csv --output-delimiter="\t" | sort > out Since I am running this command within a shell script, I tried manually inserting tab in this command, still does not work. I am using bash shell Suggestions... (8 Replies)
Discussion started by: analyst
8 Replies

6. Shell Programming and Scripting

Selecting Specific Columns and Insert the delimiter TAB

Hi, I am writing a Perl Script for the below : I have a data file that consists of the header information which is 231 Lines and the footer information as 4 lines. The total number of line including the header and footer 1.2 Million with Pipe Delimited file. For example: Header Information:... (4 Replies)
Discussion started by: filter
4 Replies

7. UNIX for Dummies Questions & Answers

Delimiter: Tab or Space?

Hello, Is there a direct command to check if the delimiter in your file is a tab or a space? And how can they be converted from one to another. Thanks, G (4 Replies)
Discussion started by: Gussifinknottle
4 Replies

8. UNIX for Advanced & Expert Users

how to search delimiter tab in a line and replace it

hi every one plz help me i want to search for a line contains tabspace This is a line The should be changed see the above line is seperated with tab space i want to replace that tab space in to # as This is a line#The should be changed i have tried with... (4 Replies)
Discussion started by: kkraja
4 Replies

9. Shell Programming and Scripting

append data in a file by using tab delimiter

Hi, I need to append the data in to a file by using tab delimiter. eg: echo "Data1" >> filename.txt echo "\t" >> filename.txt (its not working) echo "Data2" >> filename.txt. the result sould be like this. Data1 Data2 (6 Replies)
Discussion started by: Sharmila_P
6 Replies

10. Shell Programming and Scripting

Cutting a tab delimiter file

I have a 30 column tab delimited record file. I need to extract the first 10column. The following command to cut was not working cut -f 1-10 -d "\t" filename. Could any one keep on this . Thanks in Advance (4 Replies)
Discussion started by: vinod.thayil
4 Replies

Featured Tech Videos