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で記述すればできるのか教えていただけないでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
そのまま実装しました。
省略表現が初心者には難しいかもしれませんが、その分見やすいと思います。
インデントは全角スペースになっています。
#!/usr/bin/perl
use strict;
my($m1, $m2, $m3);
open(IN, "in.csv") or die;
open(OUT, "> out.csv") or die;
while(<IN>){
my($n1, $n2, $n3) = split /,/;
if($n1 eq $m1 && $n2 eq $m2 && $n3 eq $m3){
next;
}else{
($m1, $m2, $m3) = ($n1, $n2, $n3);
print OUT;
}
}
教えていただいたとおりにやってみたところ
所望の結果が得られることが確認できました。
困っていましたので、本当に助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELで同一セル内で自動的に改行されてしまう(難問) 6 2023/04/16 00:51
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/03/09 14:24
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- UNIX・Linux bashでシングルクォート内の変数の組み込み方教えてください。 2 2023/02/14 19:30
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- その他(プログラミング・Web制作) listへのappendが出来ない件 1 2022/12/06 21:44
- Windows 10 windows11にて管理者アカウントを削除してしまいました。 現在どのような状況かもあまり分かって 5 2023/01/02 20:41
- 数学 △ABC≡△DEF≡△GHIという感じで書き表すのはダメですか? 3 2022/10/23 01:58
- Excel(エクセル) Excelで、半角スペースをTABに変換する 5 2022/10/18 14:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字コードの%E3%80%とは何です...
-
CString から LPCTSTRの型に変換
-
gccでiconvを使った文字コード...
-
Excel VBAでPDFファイルをMicro...
-
ファイル名の右側を変更したい ...
-
文字化けしてしまって困っています
-
漢数字の変換
-
oracle10g eucのblobをsjisのch...
-
これはなんの文字コードでしょうか
-
文字列を quoted-printable 文...
-
Excelで半角カナのみを全角に変...
-
SQLのデータで半角カナを全角に...
-
五十音の並べ替えsortを教えて...
-
文字コード(多言語化?)の取り...
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
VBA EXCEL あるセルの中の一...
-
EXCELからCSVにすると余計なカ...
-
「何とかで始まり、何とかで終...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
CString から LPCTSTRの型に変換
-
VB6にも「ToString」ってあり...
-
gccでiconvを使った文字コード...
-
VBScript文字列をSJISからUTF8...
-
SJIS->UTF8->SJISコード変換に...
-
ローマ字からカナに変換する方...
-
シャープ(#)の受け渡し
-
文字列を quoted-printable 文...
-
Encode.pmで「髙」(ハシゴ高)...
-
LINUX上でシリアル通信(C++)
-
ローマ数字の変換をしたいのですが
-
Kシェルでの文字型→数値型変換
-
テキストをhtml変換するには
-
ひらがなから全角カタカナへの...
-
Delphiの型変換
-
SQLのデータで半角カナを全角に...
-
CString型からdouble型への変換
-
五十音の並べ替えsortを教えて...
おすすめ情報