Need script to convert TXT file into CSV


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need script to convert TXT file into CSV
# 8  
Old 04-26-2015
yes!!
# 9  
Old 04-26-2015
Fixed width definitely is NOT csv (comma separated values). Please make up your mind what exactly you want/need.
# 10  
Old 04-26-2015
As has been stated many times, your requirement for a CSV output file and your requirement for fixed width output fields are conflicting requirements. The fact that you have presented three different versions of your desired output (and none of them match any of your descriptions of your desired output) adds to the confusion.

Furthermore, you have shown us seven lines of input and four lines of output (not counting the added header line) with no indication of why some input lines are supposed to be removed from the output. You say you want fixed width fields, but the headers in two or your three output samples do not have the headers lined up with the corresponding field data. Your sample input seems to have constant width data for the 1st two output fields, and variable width data for the last output field, but there is no indication whether the input will be fixed length for those two fields or if that just happens to be true for the seven sample lines provided.

Some of your sample output uses a tab and 2 spaces as an output field separator, some uses just a tab, some uses a tab and 10 spaces, some uses a tab and 1 space, one uses a tab and 16 spaces, and one uses a tab and 12 spaces.

The following awk script produces fixed width output for the 1st two columns making the 1st output field 8 characters wider than the widest corresponding input field, the 2nd output field 6 characters wider than the widest corresponding input field, and a variable length final field with no padding added to the corresponding input field. (This seems to match some of the lines specified in your first sample output.) The headers are lined up with the underlying field data.

Code:
awk -F'[]_ ()]+' '
BEGIN {	h[1] = "NODE";	fw[1] = 4
	h[2] = "ID";	fw[2] = 2
	h[3] = "IP"
}
{	d[NR, 1] = $2
	if(length($2) > fw[1]) fw[1] = length($2)
	d[NR, 2] = $4
	if(length($4) > fw[2]) fw[2] = length($4)
	d[NR, 3] = $(NF - 1)
}
END {	fw[1] += 8
	fw[2] += 6
	printf("%-*s%-*s%s\n", fw[1], h[1], fw[2], h[2], h[3])
	for(i = 1; i <= NR; i++)
		printf("%-*s%-*s%s\n", fw[1], d[i, 1], fw[2], d[i, 2], d[i, 3])
}' Output.TXT

with the sample Output.TXT contents you provided in post #1 in this thread, produces the output:
Code:
NODE                      ID        IP
U-UU-LVDT-NOD-6002        4406      1234:333:aaa:2333:3:2:333:a
U-UU-LVDT-NOD-6004        3805      1234:333:aaa:2333:3:2:333:e
U-UU-LVDT-NOD-6005        4288      1234:333:aaa:1400:3:2:333:1e
U-UU-LVDT-NOD-6006        2810      1234:333:aaa:a00:3:2:333:7a
U-UU-LVDT-NOD-6008        2803      1234:333:aaa:a00:3:2:333:66
U-UU-LVDT-NOD-9006        2320      1234:333:aaa:1400:3:2:333:22
U-UU-LVDT-NOD-9014        2095      1234:333:aaa:a00:3:2:333:d6

and with the input:
Code:
413. U-UU-LVDT-NOD-6002 [NOD_4406]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.494 (1234:333:aaa:2333:3:2:333:a)       
414. U-UU-LVDT-NOD-6004 [NOD_3805]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.589 (1234:333:aaa:2333:3:2:333:e)       
415. U-UU-LVDT-NOD-6005 [NOD_4288]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.349 (1234:333:aaa:1400:3:2:333:1e)      
416. U-UU-LVDT-NOD-6006 [NOD_2810]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.352 (1234:333:aaa:a00:3:2:333:7a)       
417. U-UU-LVDT-NOD-6008 [NOD_2803]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.613 (1234:333:aaa:a00:3:2:333:66)       
418. U-UU-LVDT-NOD-9006 [NOD_2320]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.618 (1234:333:aaa:1400:3:2:333:22)      
419. U-UU-LVDT-NOD-9014 [NOD_2095]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.347 (1234:333:aaa:a00:3:2:333:d6)
420. U-UU-LVDT-NOD-9014-MOD2 [NOD_2] macro_outcome_dist-8.0.0(v1_0_2)   KK:1.2.347 (1234:333:aaa:a00:333:222:333:1d6)
421. U-UU-LVDT-NOD-9014-MODEL2015 [NOD_1234567890]           macro_outcome_dist-8.0.0(v1_0_2)    KK:1.2.347 (1:3:a:a0:3:2:3:6)

produces the output:
Code:
NODE                                ID              IP
U-UU-LVDT-NOD-6002                  4406            1234:333:aaa:2333:3:2:333:a
U-UU-LVDT-NOD-6004                  3805            1234:333:aaa:2333:3:2:333:e
U-UU-LVDT-NOD-6005                  4288            1234:333:aaa:1400:3:2:333:1e
U-UU-LVDT-NOD-6006                  2810            1234:333:aaa:a00:3:2:333:7a
U-UU-LVDT-NOD-6008                  2803            1234:333:aaa:a00:3:2:333:66
U-UU-LVDT-NOD-9006                  2320            1234:333:aaa:1400:3:2:333:22
U-UU-LVDT-NOD-9014                  2095            1234:333:aaa:a00:3:2:333:d6
U-UU-LVDT-NOD-9014-MOD2             2               1234:333:aaa:a00:333:222:333:1d6
U-UU-LVDT-NOD-9014-MODEL2015        1234567890      1:3:a:a0:3:2:3:6

If you want to try this script on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk.

Hopefully, this is close to what you want. If not, you MUST give us a clear specification of your input file format and a clear specification of your desired output file format or we are all wasting our time trying to help you.
This User Gave Thanks to Don Cragun For This Post:
# 11  
Old 04-27-2015
Really sorry for adding confusion.....
I need fixed width xls format.

---------- Post updated 04-27-15 at 05:46 AM ---------- Previous update was 04-26-15 at 11:45 PM ----------

HI team,
getting output logs wrong in different format from telnet script ...

Output.txt

Code:
[33m19.[0m [34mU-UU-LVDT-NODE-6006[0m [[33mNODE_3233[0m]            macro_outdoor_dist-6.0.0(v4_0_2)                DN:1.3.903 (1101:100:11w:500:3:2:103:aa)       
[33m20.[0m [31mU-UU-LVDT-NOD-6009[0m [[33mNOD_3163[0m]            macro_outdoor_dist-8.1.0(v3_1_0)                DN:1.3.409 (N/A)       
[33m21.[0m [31mU-UU-LVDT-NOD-6010[0m [[33mNOD_3167[0m]            macro_outdoor_dist-7.1.0(v3_1_0)                DN:1.3.424 (N/A)       
[33m22.[0m [31mU-UU-LVDT-NOD-6011[0m [[33mNOD_4454[0m]            macro_outdoor_dist-6.0.0(v4_0_2)                DN:1.3.398 (1101:100:11e:300:3:2:103:dd)       
[33m23.[0m [31mU-UU-LVDT-NOD-6012[0m [[33mNOD_3180[0m]            macro_outdoor_dist-6.1.0(v3_1_0)                DN:1.3.420 (N/A)       
[33m24.[0m [31mU-UU-LVDT-NOD-9011[0m [[33mNOD_2132[0m]            macro_outdoor_dist-6.1.0(v3_1_0)                DN:1.3.388 (N/A)       
[33m25.[0m [31mU-UU-LVDT-NOD-9013[0m [[33mNOD_2114[0m]            macro_outdoor_dist-6.1.0(v3_1_0)                DN:1.3.389 (N/A)       
[33m26.[0m [34mU-UU-LVDT-NOD-6000[0m [[33mNOD_2891[0m]            macro_outdoor_dist-6.0.0(v4_0_2)                DN:1.3.724 (1101:100:11a:300:3:2:103:aa)


When run command manually its give right output like this but by using script output come diffrent
Right Output.txt is

Eg...

Code:
413. U-UU-LVDT-NOD-6002 [NOD_4406]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.494 (1234:333:aaa:2333:3:2:333:a)       
414. U-UU-LVDT-NOD-6004 [NOD_3805]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.589 (1234:333:aaa:2333:3:2:333:e)       
415. U-UU-LVDT-NOD-6005 [NOD_4288]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.349 (1234:333:aaa:1400:3:2:333:1e)      
416. U-UU-LVDT-NOD-6006 [NOD_2810]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.352 (1234:333:aaa:a00:3:2:333:7a)       
417. U-UU-LVDT-NOD-6008 [NOD_2803]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.613 (1234:333:aaa:a00:3:2:333:66)       
418. U-UU-LVDT-NOD-9006 [NOD_2320]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.618 (1234:333:aaa:1400:3:2:333:22)      
419. U-UU-LVDT-NOD-9014 [NOD_2095]           macro_outcome_dist-8.0.0(v1_0_2)                KK:1.2.347 (1234:333:aaa:a00:3:2:333:d6)

Moderator's Comments:
Mod Comment Please use CODE tags (not ICODE tags) when marking long lines and when marking multi-line input, output, and code segments.

Last edited by Don Cragun; 04-27-2015 at 03:46 PM.. Reason: Fix tags.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Convert a txt file to a CSV file

Hi , I have a Txt file which consist of 1000's of SOAP request and response and i want the file to be converted to a csv file like column a should have a soap request and column b should have the soap response . can someone assist me in achieving this please ? Thanks (2 Replies)
Discussion started by: kumarm8
2 Replies

2. Shell Programming and Scripting

Convert shell script output txt file to html table

My concnern related to the post -Convert shell script output txt file to html table, in this how to print the heading as color. awk 'BEGIN{print "<table>"} {print "<tr>";for(i=1;i<=NF;i++)print "<td>" $i"</td>";print "</tr>"} END{print "</table>"}' <filename> (8 Replies)
Discussion started by: sarajobmai
8 Replies

3. Shell Programming and Scripting

Script to convert CSV file to HTML

Hi, I have made a a script which creates a csv file as daily database report However i want to covert that csv file to html because csv file does not have a good visibilty. So it is possible to have such csv to html coversion script. Your prompt help much appreciated. Thanks in advance (4 Replies)
Discussion started by: sv0081493
4 Replies

4. UNIX for Dummies Questions & Answers

Help with a project. convert a txt to csv

Hi people. I've finally converted to linux, and I'm starting to explore the amazing capabilities of the terminal. At the moment in trying to learn how to extract text using the "grep" and "sed" command. I decided to learn by trying to figure out how to solve a practical problem. I have a schedule... (4 Replies)
Discussion started by: kugalskaper
4 Replies

5. Shell Programming and Scripting

Convert shell script output txt file to html table

Hi, I have script which generates the output as below: Jobname Date Time Status abc 12/9/11 17:00 Completed xyz 13/9/11 21:00 Running I have the output as a text file. I need to convert it into a HTML Table and sent it thru email ... (6 Replies)
Discussion started by: a12ka4
6 Replies

6. Shell Programming and Scripting

Convert txt to csv

Hi - I am looking to convert the following text to csv. The columns may not always have data in them and they may have varying spaces but I still need to have a comma there anyway: Sample Data: ~~~~~~~ Name Email Location Phone Tom... (4 Replies)
Discussion started by: JPBovaird
4 Replies

7. Programming

awk script to convert a text file into csv format

hi...... thanks for allowing me to start a discussion i am collecting usb usage details of all users and convert it into csv files so that i can export it into some database.. the input text file is as follows:- USB History Dump by nabiy (c)2008 (1) --- Kingston DataTraveler 130 USB... (2 Replies)
Discussion started by: certteam
2 Replies

8. Shell Programming and Scripting

Is there any script which convert binary file to CSV format

Dear guys; I have a binary file and I need to convert its data to csv format ...appreciating your help. Best Regards (14 Replies)
Discussion started by: ahmad.diab
14 Replies

9. Shell Programming and Scripting

Txt to csv convert

Hi, I was trying some split command to pull out values like "uid=abc,ou=INTERNAL,ou=PEOPLE" into a csv file. However because of erratic nature of occurrance of rows made me stopped. Could someone help me in this? and if someone has a one liner for this? The text file contain pattern like this... (14 Replies)
Discussion started by: john_prince
14 Replies

10. Shell Programming and Scripting

how to convert XLS to CSV and DOC/RTF to TXT

Hi, i don't know anything about PERL. Can anyone help me providing PERL scripts for 1. converting XLS to CSV (and vice-versa) 2. converting DOC/RTF to TXT Thanks much Prvn (1 Reply)
Discussion started by: prvnrk
1 Replies
Login or Register to Ask a Question