Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: search and replace a word in a column

by Anonymous Monk
on Aug 07, 2013 at 08:41 UTC ( [id://1048295]=note: print w/replies, xml ) Need Help??


in reply to search and replace a word in a column

Fantastic, grab App::CCSV and these faqs and away you go :)
Use Text::CSV or Text::xSV

Examples at

 [CSV hash ] CSV hash
Best way to match a hash with large CSV file
perl hash to CSV using Text::CSV_XS
Issue parsing CSV into hashes?
Veriable Length Array/Hash derived from CSV to populate an XML
extracting data from CSV files and making hash of hashes
Re^2: build hash from csv file
Encoding a hash in perl before saving it as a CSV file
hash from CSV-like structure
Read the csv file to a hash....
Parsing CSV into a hash
build hash from csv file
Converting a CSV list to a list of hashrefs naming the fields

Converting File Delimiters (csv to tsv to psv, use App::CCSV)

Replies are listed 'Best First'.
Re^2: search and replace a word in a column
by ghosh123 (Monk) on Aug 07, 2013 at 09:15 UTC

    Hi Lakssreedhar
    Use a 2D array to read a file column wise. Then adopt the folowing steps :

    1. count the number of lines of your file.
    2. Use some regular expression to split the file with respect to the column delimiters i.e tab in your case . Thus build the 2D array.
    3. Use a sub routine to get all the values of the 9th column and push them in an array.
    4. Process the array to look where at which index I is preceded by O. Find those indexes.
    5. open your data file again and using the 2D matrix just replace those positions .
    The following code could be a bit help to you

    my @matrix; my $row = 0; # count no. of lines open(DATA, "< data.txt"); my @lines = <DATA>; close(DATA); my $c = @lines; open(DATA, "< data.txt"); push @{$matrix[$row++]}, split while <DATA>; dd @matrix; &colprint(\@matrix); close(DATA); my @arrayOfninth_col; sub colprint { my $matrix_ref = shift; for (1 .. $c) { print "$matrix_ref->[$c-1][9] \n"; my $value = $matrix_ref->[$c-1][9]; push @arrayOfninth_col , $value; } # process the array @arrayOfninth_col for indexes }

      i have just split the columns using tab and then again split the 9th column and checked if value of a particular index is I and index-1 is o.But the substitution is not working properly

        which substitution, paste your code here

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1048295]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (3)
As of 2024-04-19 02:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found