perlでのcsv形式のテキストファイルの変換
perlを使用してcsv形式のテキストファイルを下記のように変換したいと思っています。
【変換前】
10, abc , def , ghi ,jkl ----1行目
10, abc , def , aaa, bbb ----2行目
10, abc , def , ccc , ddd ----3行目
11, abc , def , eee , fff ----4行目
11, abc , def , aaa , ggg ----5行目
11, zzz , def , aaa , ggg ----6行目
12, abc , def , aaa ,ggg ----7行目
12, zzz , def, aaa , ggg ----8行目
【変換後】
10, abc , def , ghi ,jkl ----1行目
11, abc , def , eee , fff ----4行目
11, zzz , def , aaa , ggg ----6行目
12, abc , def , aaa ,ggg ----7行目
12, zzz , def, aaa , ggg ----8行目
変換内容はcsv形式のテキストファイルで、”,”で区切った先頭3列が
前の行の先頭3列と同じならその行は出力しない、といった
変換をしたいと思っております。
(例えば2行目ですと先頭3列は10, abc ,defになっており、
1行目の先頭3列と同じ文字列になっているためこの行は出力しない)
当方、Perl初心者で上記のようなことがPerlでできるかも
よくわかっておりません。
そこで、上記のような変換はPerlで可能なのか、そしてもし可能であるのなら
どのようにPerlで記述すればできるのか教えていただけないでしょうか。
よろしくお願いいたします。
お礼
つたない質問に回答ありがとうございます! ex1) コーディング: dim str as String = "abc^|^efg^|^" str = str.Replace("^|^", """") まさにこれなんです。知りたかったのは・・・ ex1) コーディング: dim str as String = """Abc@def""@example.com" str = str.Replace(???????) このReplaceの???????にどんなコーディングをすれば、strに""""Abc@def""@example.com"が入るでしょうか?ということでした。 これを、カンマ区切りのcsvファイルに出力し、それをExcelに貼るので、その時にセルには "Abc@def"@example.com と入ってほしいためです。 よろしければ、もう少しお知恵をお貸し下さい。
補足
最初のお知恵から考えてみて解決しました! str = str.Replace("""", """""""") として、CSV読み込み時に Microsoft.VisualBasic.FileIO.TextFieldParser.HasFieldsEnclosedInQuotes で、区切り形式のファイルを解析する際、フィールドが引用符で 囲まれていればそのまま返すようにしたらうまくいきました。 (またつたない説明ですみません) 夜遅くにご丁寧に回答いただきありがとうございました。