in reply to edit a CSV and "in-place" replacement

TYPO. there was typo in my origional post. It should read follow:

I want to change it from "02234567899" to "+912234567899".

Thanks.

  • Comment on Re: edit a CSV and "in-place" replacement

Replies are listed 'Best First'.
Re^2: edit a CSV and "in-place" replacement
by bitingduck (Deacon) on Jun 22, 2012 at 07:03 UTC

    If you can be sure the regex won't match any other field, you can try:

    perl -p -i -e 's/\b0(\d{10})\b/\+91$1/g;' filename

    If there are other fields that it could match and munge, then it could all go horribly wrong and you're better off with something that accurately replaces only that field, like Tux already posted.

    Update: I just took a look over at your thread at SO. You're trying a dangerous thing by counting commas in a CSV. Any element of a CSV can have commas inside of quotes to protect them, so you could have any number of commas before the 35th element in a row. CSV is a deceptive format-- it seems all simple and benign, but can be complicated in really annoying ways. If the quick and dirty regex won't work, use a module like Tux shows that is designed to deal with the unexpected but legal cases in the CSV.

      Wonderful. This is what I wanted. Your one liner is working perfectly. Thank you very much.

      Yes, I understand that counting the commas is not the right way, but the file in question is my google contacts file exported to CSV and hence I was sure that there are not commas in between.

      Thanks again.

        Just when you start to think that, you discover one of your contacts is "Dinosaur, Jr." or you forget about all those lawyers who like to put "I. M. Alawyer, Esq." in their contact info, and you get a bunch of munged up data. Excel will correctly quote cells full of commas when you export to CSV. I haven't tried it with Google.