- ベストアンサー
PerlでCSVファイルの処理方法
- Perlを使用してCSVファイルの処理方法について教えてください。
- CSVファイルをCygwinコマンド上で指定の数値まで表示する方法について教えてください。
- CSVファイル(data1.csv)の3行目までの数値をCygwinコマンド上に表示するプログラムを教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
この例だとCSVとか列とか全然関係無いですね。 常套手段として方針は2つ (1)先に3行だけのCSVにする (2)Perlで3行だけ (1)なら、Cygwinの(というか、UNIX系OSで標準的な) headコマンドとセットにして head -3 data1.csv | perl test1.pl # headコマンドがなんだかわからなければ、man head を実行してみる。 # | (パイプ)がなんだかわからなければ、「標準入出力」「リダイレクト」「パイプ」あたりで検索して概念を覚えておくといろいろ便利 (2)なら、#1を参考に。
その他の回答 (2)
- notnot
- ベストアンサー率47% (4900/10358)
>CSVファイル(data1.csv)の3行目までの数値だけをCygwinコマンド上に表記したい場合、どのようにプログラムすればよいのですか。 意味が不明です。次のうちどれですか? 1.データをコマンドライン上で指定したい 2.データをファイルから読むのだが、ファイルのデータの前に3行分だけコマンドラインで指定したい 3.その他 1.の場合 $ ( echo -5,1; echo -4,2; echo -3.1 ) | perl test1.pl 2.の場合 $ ( echo -5,1; echo -4,2; echo -3.1; cat data1.csv ) | perl test1.pl
お礼
回答ありがとうございます。 説明が良くなかったのですが、、、 やりたかったことは、CSVファイルのA列B列記載の数値を、(全ての行ではなく)3行目までコマンド上に表示です。
- Wr5
- ベストアンサー率53% (2173/4061)
>3行目までの数値だけをCygwinコマンド上に表記したい場合 whileループで何行目まで処理したかカウントして、必要な行数処理したらループから抜ける。 $line = 0; while ($_=<stdin>){ print"$_\n"; $line++; if($line == 3) last; } みたいな感じでしょうか。 まぁ、そういう場合ならforループにすると思いますが。 for($line = 0;$_=<stdin> && $line < 3;$line++) { print"$_\n"; } でしょうかね。 CSVファイルかどうかは関係ないみたいですが……。
お礼
回答ありがとうございます。 上記プログラムで実行出来ました。
お礼
回答ありがとうございます。 headコマンド、 | (パイプ)も教えて頂きありがとうございます。