replace space with delimiter in whole file -perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting replace space with delimiter in whole file -perl
# 1  
Old 02-14-2008
replace space with delimiter in whole file -perl

Hi

I have a file which have say about 100,000 records..
the records in it look like

Some kind of text 1234567891 abcd February 14, 2008 03:58:54 AM lmnop

This is how it looks.. if u notice there is a 2byte space between each column.. and im planning to replace that with '|' ..

say ..

Some kind of text|1234567891|abcd|February 14, 2008 03:58:54 AM|lmnop

.. here is the code which i have written.. but someone should help me in completing it... thanks in advance

open(fh_tmp,"<","$chk_file");
while (my $line = <fh_tmp>)
{
$line =~ s/ /|/g ;
open(out,">>",tmpfile);
print out $line;
close(out);
}
close(fh_tmp);


please correct me if im wrong.. thanks
# 2  
Old 02-14-2008
small correction.. there can be more than 2 byte space between 2 columns...
it should replace with delimiter '|' if it has two consecutive spaces .. not just one..

as the first column has single spaces in it "Some kind of text" .. this is one single record...
-thanks
# 3  
Old 02-14-2008
why do you open tmpfile inside the loop? Move the open statement above the loop, close below the loop.
# 4  
Old 02-14-2008
sed -e "s/ [ ]*/|/g" infile > outfile


there are 2 spaces between the first "/" and the "[".
# 5  
Old 02-14-2008
i will correct the loop position..thanks for that jim...
hey sb008.. im writing a perl script.. not a shell.. but still thanks for ur suggestion.. i can use it when i do a shell ..

thanks for ur replies
# 6  
Old 02-14-2008
Code:
open(FH_TMP,"<","$chk_file");
open(OUT,">>",tmpfile);
while (my $line = <FH_TMP>)
{
$line =~ s/ {2,}/|/g;
print OUT $line;
}
close(FH_TMP);
close(OUT);

could be done faster using perls inplace editor:

Code:
@ARGV = ($chk_file);
$^I = '.bak';
while (<>){
s/ {2,}/|/g;
print;
}

will cretae a backup of the original file first. (.bak extension)
# 7  
Old 02-14-2008
Quote:
Originally Posted by meghana
i will correct the loop position..thanks for that jim...
hey sb008.. im writing a perl script.. not a shell.. but still thanks for ur suggestion.. i can use it when i do a shell ..

thanks for ur replies
aaaaaaaaaaaaaah, homework
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace delimiter for a particular column in a pipe delimited file

I have an input file as below Emp1|FirstName|MiddleName|LastName|Address|Pincode|PhoneNumber 1234|FirstName1|MiddleName2|LastName3| Add1 || ADD2|123|000000000 Output : 1234|FirstName1|MiddleName2|LastName3| Add1 ,, ADD2|123|000000000 OR 1234,FirstName1,MiddleName2,LastName3, Add1 ||... (2 Replies)
Discussion started by: styris
2 Replies

2. Shell Programming and Scripting

Replace a space with underscore in a file

i have a file with following data. { EqName "Tan 1" .... .... } { EqName "Sin 2" ... ... } I have to replace the value of EqName to Tan_1 and Sin_2 in file.Can i use sed or awk ? cat file|grep EqName|awk '{print $2 $3}'|sed -i 's//_/g' I tried with this but it... (2 Replies)
Discussion started by: Jag02
2 Replies

3. Shell Programming and Scripting

Replace file name with Space as content

Hi, I am having a files in my directory like this: 2014 1049_file1.txt 2014 1050_file2.txt 2014 1110_file3.txt 2014 1145_file4.txt 2014 2049_file5.txt I need to replace the above file names like this without changing the content of filename: file1.txt file2.txt file3.txt... (10 Replies)
Discussion started by: rohit_shinez
10 Replies

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

5. Shell Programming and Scripting

Need to use delimiter as : and space in awk

Hi , Please suggest me how do I use : (colon and one space) as a delimiter in awk Best regards, Vishal (2 Replies)
Discussion started by: Vishal_dba
2 Replies

6. Shell Programming and Scripting

Space as a delimiter

not sure if i'm doing this right i'm new tho this but i'm trying to use a space as a delimiter with the cut command my code is size=$( du -k -S -s /home/cmik | cut -d' ' -f1 ) i've also tried -f2 and switching the -d and -f around if that does anything (3 Replies)
Discussion started by: Cmik
3 Replies

7. Shell Programming and Scripting

comma delimiter and space

I have a csv file and there is a problem which I need to resolve. Column1,Column2,Colum3,Column4 ,x,y,z ,d,c,v t,l,m,n ,h,s,k ,k,,y z,j, ,p Now if you see column1 for row 1 and row 4 though they are null there is a space but in case of row2 and row 5 there is no space. I want row... (3 Replies)
Discussion started by: RubinPat
3 Replies

8. Shell Programming and Scripting

replace space with comma in perl

arr_Ent_NameId variable holds 'Prakash pawar' 'sag' '23' '50000' this value 'Prakash pawar' 'sag' '23' '50000' I want to replace space( ) with comma (,) There are 4 fields here. I don't want to replace first field with comma. output should be: 'Prakash,pawar','sag','23','50000' ... (2 Replies)
Discussion started by: pritish.sas
2 Replies

9. Shell Programming and Scripting

how to differentiate columns of a file in perl with no specific delimiter

Hi everybody, This time I am having one issue in perl. I have to create comma separated file using the following type of information. The problem is the columns do not have any specific delimiter. So while using split I am getting different value. Some where it is space(S) and some where it is... (9 Replies)
Discussion started by: Amiya Rath
9 Replies

10. Shell Programming and Scripting

replace delimiter : with '\001' in unix data file

HI can any one tell me how to replace a delimiter : with another delimiter '\001' it is a non printable octal character. thanks in adv spandu (4 Replies)
Discussion started by: spandu
4 Replies
Login or Register to Ask a Question