WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:perlでデータの抽出をしたいのですが・・・

0:[投稿] parl初心者 [2007/01/26 11:01 ] [環境:IE6.WINXP わからない]

perlでtext形式のデータより、特定のキーワードを含むレコードのみを抽出したいのですが・・・sort等では出来ないのでしょうか?どなたか Help Me!!


1:[回答] ティルド [2007/01/26 16:57 ]

レコードの意味をよく理解してないので良くわかりませんが。。。
↓のはbが入っていなければ消去されます。

- - - dat.txt - - -
a<>b<>c<>d<>e<>f
a<>c<>c<>d<>e<>f
w<>r<>t<>a<>g<>b
とかだとすると・・・

- - - perl - - -
    open(FH, "test.dat");
    my @Array = <FH>;
    close(FH);

    my @sort_list = sort({ $_ = $a; if (!/b/) { undef($a); } $_ = $b; if (!/b/) { undef($b); } return 0; } @Array);


ちなみに、そのtext形式のデータというのを提示してくだされば、こちらもうまく対応できると思うので、次からはよろしくお願いします。

(レコードの意味を取り違えていたらすみません。というか絶対間違えてるよな・・・これ。)


2:[質問] parl初心者 [2007/02/05 16:07 ]

ティルドさん回答有難う御座います。
一応レコードというのは、日、商品、売り上げ金とかです。
2007/02/01,チョコ,200
2007/02/04,ガム,150
2007/02/03,アイス,100
2007/01/31,ビスケット,280
2007/02/04,洗剤,98
2007/01/30,たわし,48
みたいなデータより、2007/01/30のみを抽出する処理です。
上記の方法がいまいち理解できませんが、解読してみます。


3:[回答] jam [2007/02/09 09:20 ]

抽出ならgrepです。
--
my @data = (
"2007/02/01,チョコ,200",
"2007/02/04,ガム,150",
"2007/02/03,アイス,100",
"2007/01/30,もげ,90",
"2007/01/31,ビスケット,280",
"2007/02/04,洗剤,98",
"2007/01/30,たわし,48"
);
my @grep_data = grep { '2007/01/30' eq (split(","))[0] } @data;
print join("\n",@grep_data),"\n";


4:[完了] parl初心者 [2007/02/14 17:55 ]

jamさん有難う御座います。早速試してみます。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]