Delimeter used in data


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Delimeter used in data
# 1  
Old 03-16-2006
Delimeter used in data

Blasted data inputters Smilie they always have to screw my data up....My comma delimited file with three fields ( firstname,surname and address ) has been screwed up by people entering addresses like this (putting a comma in between the house number and the street name)

142,Stonewall Avenue

We explicitly instructed them not to do this and yet you always get one dont you

So my three field comma delimited file is now a four field one on some lines Smilie eg

Gary,Jones,12 Example Street
Peter,Wilson,15,Demo Street

Im not sure theres any way to rectify this ? , maybe theres something you all could suggest.....any help would be greatly appreciated
# 2  
Old 03-16-2006
if this is the only problem, i.e. there is only one extra comma in some records, a simple awk solution
Quote:
awk -F',' '{print $1",",$2",",$3,$4}' input.txt

but I am sure there could be some other complexities involved as well, if that is the case specify them,
Gaurav
# 3  
Old 03-16-2006
yes you are right, it is more complex as but there are fields after the address field (in fact another 10 or so) . I assume your code has concatenated $3 and $4 and I agree that if they were the last fields in the record then this wouldnt be a problem, but they arent, so concatenating them would put all the subsequent fields out of line...apologies..I should have given you the full picture from the offset

Im thinking that I may have to change my delimiting character Smilie
# 4  
Old 03-16-2006
can you give the full picture now it might help. Exactly how many fields are there and give some sample data if possible. And is it possible that no. of fields in two records may differ.
Maybe you wont have to change the delimiting character.
# 5  
Old 03-16-2006
Try this.

Code:
#! /usr/local/bin/perl -w

open (TXT,"<input.txt");

while ($line=<TXT>) {
        if ( $line =~ m/([^,]*,[^,]*,)(.*)/ ) {
                $L = $1;
                $R = $2;
                $R =~ s/,/ /g;
                print "$L$R\n";
        }
}

Would give output as

Gary,Jones,12 Example Street
Peter,Wilson,15 Demo Street
# 6  
Old 03-16-2006
ok, one of the deveolpers of the system that outputs the source file has just popped over to my desk saying theyre gonna change the delimiter to a * so all my problems have now been solved

thanks all for your input
# 7  
Old 03-16-2006
Until someone uses a * somewhere in the data.

| <- pipe character -- a better user created data delimiter because people don't know/seldom use it.

It's sort of a defacto unix delimiter for this kind of thing. More of a workaround to bypass the standard idiot user, you might say.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk with tab delimeter

Hi Team below test file contains tab delimeter file and i am excepting the number of files 3. File : test.txt a b c awk -vFPAT='\t' -vOFS="\t" -v a="0" -v b="10" ' NR>a {if (NF != b ) print NR"@"NF }' test.txt current output is 1@2 required output is 1@3 Cloud you please help... (7 Replies)
Discussion started by: bmk123
7 Replies

2. Shell Programming and Scripting

Replace every second instance of delimeter

Hi, Need help on replacing every second instance of delimeter. Scenario: var="Name1,Value1,Name2,Value2,Name3,Value3,Name4,Value" I want every second "," to replace with "|" I tried like below echo $var| sed 's/,/|/2' But, it's not working. Expected output: ... (4 Replies)
Discussion started by: Sumanthsv
4 Replies

3. Shell Programming and Scripting

awk substr delimeter

Hi All, I have an awk command that uses the substr function - At the moment I know the length of the values so can use the example below i.e substr(i,0,1) However in future these lengths may change so wondered if you can use a delimiter within a substr? Like in bash you could use cut -d ';',... (6 Replies)
Discussion started by: Ads89
6 Replies

4. Shell Programming and Scripting

Put delimeter in data based on value

Hi Friends, I have a file as below source.txt 12345JackYKing32N 1235 JulyYoig 31N i am using cut command for cutting the fields cut -c 1-5 source.txt 12345 1235 like above i have to use each time to cut all the fieds manually. I have a file(pre.txt) which tells... (3 Replies)
Discussion started by: i150371485
3 Replies

5. Shell Programming and Scripting

Replacing the delimeter with other delimeter

Hi Friends, I have a file1.txt as below 29123973Ç2012-0529Ç35310124Ç000000000004762Ç00010Ç20Ç390ÇÇÇÇF 29123974Ç20120529Ç35310125Ç0000000000046770Ç00010Ç20Ç390ÇÇÇÇF 29123975Ç20120529Ç35310126Ç0000000000046804Ç00010Ç20Ç390ÇÇÇÇF 29123976Ç20120529Ç35310127Ç0000000000044820Ç00010Ç20Ç390ÇÇÇÇF i have a file2.txt... (4 Replies)
Discussion started by: i150371485
4 Replies

6. Shell Programming and Scripting

missing comma delimeter in columns

hi if comma delimeter missing in columns treat them as bad file and if it is not then gudfiles. only checking columns not data. id,name,sal,deptno =======> gudfile 1,awa,200,10 2,aba,100,20 3,cdc,300,30 idname,sal,deptno ========> badfile since its missing (.)... (8 Replies)
Discussion started by: awais290
8 Replies

7. Shell Programming and Scripting

Attaching an end delimeter

Hi, I have a file below I want to attach an end delimeter '{}' after the time stamp input file 22113350444356|Status:Assigned,Notes: APP PRD |Sep 28 2011 12:12:55:660PM 22113350398356|Status:Assigned,Notes: APP PRD |Sep 28 2011 12:12:55:660AM 22113350621356|Status:Assigned,Notes:... (6 Replies)
Discussion started by: ratheeshjulk
6 Replies

8. Shell Programming and Scripting

Count the delimeter from a file and delete the row if delimeter count doesnt match.

I have a file containing about 5 million rows, in the file there are some records which has extra delimiter at random position. (we dont know the positions), now we have to Count the delimeter from each row and if the count of delimeter is not matching then I want to delete those rows from the... (5 Replies)
Discussion started by: Akumar1
5 Replies

9. Shell Programming and Scripting

Add Delimeter,

I want to add the delimiter in particular positions in one txt file. My file is : 123450000000000testing 898983920202020testfil . . . 1-5 -- after 5th position add , 6-10 -- after 10th position add , 11-7 -- like wise.. Expecting output is: 12345,0000000000,testing... (5 Replies)
Discussion started by: Jairaj
5 Replies

10. UNIX for Dummies Questions & Answers

How do you represent a field delimeter that is a space???

you know like if you want to work on a specified field in the password file. you would specify the field your interested in my telling the script that the fields are separated by a colon. now, my problem is that I want to specify a field that is not separated by a colon but by a space or tab... (1 Reply)
Discussion started by: TRUEST
1 Replies
Login or Register to Ask a Question