• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlでcsvファイルから複数行を抽出したい)

PerlでCSVファイルから複数行を抽出する方法

このQ&Aのポイント
  • プログラミング初心者のため、Perlを使用してCSVファイルから任意の複数行を抽出する方法について相談です。
  • 現在、Perlのgetcsv.plというスクリプトを使用しているのですが、1行だけではなく複数行を抽出する方法がわかりません。
  • コマンドライン引数を使って、getcsv.plスクリプトで指定した行番号の行を抽出する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

>元のcsvから、引数の数字(上記の場合だと、1行目、 3行目、 8行目、 10行目)のデータだけを別のcsvで作成できないかと思っています。 「現在の行番号が、$ARGV[0] または $ARGV[1] または $ARGV[2] または $ARGV[3]のいづれかと等しい」というつもりで >$. == $ARGV[0] || $ARGV[1] || $ARGV[2] || $ARGV[3] と書かれているのでしょうが、これは 「現在の行番号が、$ARGV[0]と等しい」または「$ARGV[1]が0以外」または「$ARGV[2]が0以外」または「$ARGV[3]が0以外」 という意味です。 書くのなら 「現在の行番号が、$ARGV[0]と等しい」または「現在の行番号が、$ARGV[1]と等しい」または「現在の行番号が、$ARGV[2]と等しい」または「現在の行番号が、$ARGV[3]と等しい」 という風に書いてください。

OKINAWANOJ
質問者

補足

----------------------getcsv.pl ここから---------------------- #!/usr/bin/perl -- use strict; use warnings; open(IN, "<adata.csv"); open (OUT, ">$bdata.csv"); while(<IN>){ if($. == $ARGV[0] || $. == $ARGV[1] || $. == $ARGV[2] || $. == $ARGV[3]) { print OUT $_; } } close(IN); close (OUT); ----------------------getcsv.pl ここまで---------------------- 上記で思っていた通りの結果を取得することができました。 ありがとうございました。

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>if($. == $ARGV[0] || $ARGV[1] || $ARGV[2] || $ARGV[3]) { どういう動作を期待して、これを書いていますか。

OKINAWANOJ
質問者

補足

元のcsvから、引数の数字(上記の場合だと、1行目、 3行目、 8行目、 10行目)のデータだけを別のcsvで作成できないかと思っています。 よろしくお願いいたします。

関連するQ&A