• 締切済み

perlでファイルを読み込んだ順で重複行チェック

perl初心者です。 ファイルを読み込んで重複行について以下の処理をおこないたいです。 ハッシュを使えば比較的苦労しないでできそうなのですが、 ファイルを読み込んだ順に出力をしたいので悩んでいます。 アドバイスをお願いします。 やりたいこと。 ・タブ区切りのファイルを読み込む ・ファイルの出力順は入力ファイルの上から順とし、並び替えを変えたくない。 ・重複行だけのファイルと重複していないファイルを作りたい。←パターン1,パターン2 例) 以下の入力ファイル(タブ区切り)についてidをキーに重複行チェック 入力ファイル id name age 1 質問一郎 20 2 質問和美 30 3 質問次郎 40 1 回答花子 50 3 回答太郎 22 ・パタン1の出力 重複ファイル 1 質問一郎 20 1 回答花子 50 3 質問次郎 40 3 回答太郎 22 ユニークファイル 2 質問和美 30 --------------------- ・パタン2の出力 ※ 重複ファイル 1 質問一郎 20 1 回答花子 50 3 質問次郎 40 3 回答太郎 22 ユニークファイル 1 質問一郎 20 2 質問和美 30 3 質問次郎 40 パターン2の場合、ユニークファイルには最初に読み込んだ重複ファイル1行分も出力させる。

  • Perl
  • 回答数1
  • ありがとう数3

みんなの回答

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

案1.ファイルを2回読む 案2.ファイル内容を全部配列に格納する

komegu_66
質問者

お礼

ありがとうございます。 サクッとはいかないようですね。 苦戦しながら頑張ってみます。

関連するQ&A

  • アクセス関数を使って、重複チェック

    アクセス2003を使っています。 ある講座の受講者のデータが入っているデータベースを作ろうと考えています。 その講座には受講者が実際に重複して受講する人がいます。 重複して受講しているかどうかを、「選択クエリ上の関数」を使って調べたいです。 具体的には  氏名  受講月 山田太郎 2009/1 佐藤一郎 2009/2 山田次郎 2009/3 佐藤一郎 2009/4 というデータベースがあり、佐藤一郎が重複しています。(受講月は重複していません) これをクエリを使って、  氏名  受講月 山田太郎 2009/1 佐藤一郎 2009/2 重複 山田次郎 2009/3 佐藤一郎 2009/4 重複 というクエリを作りたいです。 どうすれば良いでしょうか?

  • 【エクセル】領域上端のセル情報を返す方法

    1行目のA列からI列まで順に、「日付 太郎 一郎 次郎 花子 1位 2位 3位 4位」 2行目のA列からE列まで「1/5 1 2 3 4」 3行目以下同様に「1/6 2 1 4 3」 4行目「1/7 4 2 3 1」・・・・・ (数字は順位です) 上記のように、その日のランキングを入力(別の領域からRANK関数で返しています)しており、その横のF~Iの列に1行目にある人の名前を返したいのですが、良い方法は あるでしょうか。 例えば1/6であれば、 F3:一郎 G3:太郎 H3:花子 I3:次郎 という答えが出て欲しいのですが。 できれば関数で処理したいのですが、宜しくお願いいたします。

  • 連れ子の相続権について

    ・花子さんと太郎さんの間に一郎君(子供)がいました。 ・花子さんは太郎さんと離婚し、花子さんが一郎君の親権者となりました。 ・花子さんは次郎さんと再婚し、一郎君は次郎さんの扶養(養子?)となりました。 この場合、太郎さんが死んだとき、一郎君に太郎さんの相続をする権利はあるのでしょうか。 一般的な話として教えていただけたらと思います。

  • Accessで相続関係図を作りたい

    Accessで相続関係図を作りたいと思っております。 例えば、以下のようにテーブルにデータが入力されたら、 被相続人   相続人   続柄 ○○太郎   ○○花子  妻 ○○太郎   ○○一郎  子 ○○太郎   ○○次郎  子 次のようにレポートが表示されるようにしたいと思います。    ○○花子 ━┳━ ○○太郎          ┃      ┏━━━┻━━━┓    ○○一郎     ○○次郎 これが子供が3人だった場合には、以下のレポートに自動的に切り替わるようにしたいと思います。    ○○花子 ━┳━ ○○太郎          ┃      ┏━━━╋━━━┓    ○○一郎 △△良子 ○○次郎 レポートについては、子が2人用、3人用・・と、様々なパターンのテンプレートを用意しておき、そこに情報が格納されるようにしておこうと思っておりますが、○○太郎の相続情報をレポートで表示したいと操作すると、自動的に適切な形式のレポートが表示されるようにしたいと思っております。 レポートのソースをパラメータクエリにして、何とかならないかと悪戦苦闘しておりますが、なかなかうまくいきません。 上記について、こうすればうまくいくのでは?など、ご助言いただけないでしょうか。 よろしくお願いします。

  • Exelでの行とばしの集計方法

    Exelで、次のような表になっているとき、 行1  山田花子 行2  茶道部 行3  佐藤太郎 行4  野球部 行5  清水一郎 行6  水泳部 別のシートに、 行1 山田花子 行2 佐藤太郎 行3 清水一郎 とまとめることができますでしょうか。 よろしくお願いします。

  • エクセルの問題の解き方を教えてください。

    回答2がわかりません↓ 手違いがあり、次の一覧にはデータの重複が発生してしまいました。 効率的に重複データを削除する手順を記述してください。 回答1) 関数を使用し作業した結果で削除する方法 回答2) その他の方法で削除する方法 社員コード 社員名 回答欄 222222 桐生 太郎 444444 前橋 一郎 999999 高崎 花子 555555 伊勢崎 次郎 111111 富岡 一平 777777 藤岡 愛子 666666 太田 明 333333 安中 春子 888888 館林 夏江 555555 伊勢崎 次郎 333333 安中 春子 444444 前橋 一郎 999999 高崎 花子 111111 富岡 一平 333333 安中 春子 444444 前橋 一郎 555555 伊勢崎 次郎 888888 館林 夏江 999999 高崎 花子 666666 太田 明美 777777 藤岡 愛子 999999 高崎 花子 555555 伊勢崎 次郎 333333 安中 春子 444444 前橋 一郎 111111 富岡 一平 666666 太田 明美 333333 安中 春子 888888 館林 夏江 555555 伊勢崎 次郎 333333 安中 春子 444444 前橋 一郎 999999 高崎 花子 111111 富岡 一平 333333 安中 春子 444444 前橋 一郎 555555 伊勢崎 次郎 444444 前橋 一郎 999999 高崎 花子 111111 富岡 一平 333333 安中 春子 444444 前橋 一郎 999999 高崎 花子 555555 伊勢崎 次郎 111111 富岡 一平 777777 藤岡 愛子 666666 太田 明美 333333 安中 春子 555555 伊勢崎 次郎 888888 館林 夏江

  • replaceを使って更に重複レコード削除するには?

    下記のように空白除去、ソート、重複行削除を行いたいのですが、 なかなかうまくいきません。どなたか力を貸して下さい。 ----------------- name    | laptime ----------------- 山田太郎  | 50 鈴木 花子 | 20 山田 太郎  | 10 齊藤 二郎 | 60 山田 太郎  | 30 ------------------ ↓ ----------------- name    | laptime ----------------- 山田太郎  | 10 鈴木花子 | 20 齊藤二郎 | 60 ------------------ * laptime が小さい順 * nameの空白除去 * 空白除去後のnameの重複行削除(laptimeが一番小さいものを残す) 下記のようにSQL文を作って発行してみたのですが、 SELECT DISTINCT replace( replace( trim( name ) , ' ', '' ) , ' ', '' ) AS name_a, laptime FROM tyouhuku ORDER BY laptime ASC ----------------- name_a  | laptime ----------------- 山田太郎 | 10 鈴木花子 | 20 山田太郎 | 30 山田太郎 | 50 齊藤二郎 | 60 ------------------ と、空白削除とlaptimeソートまで出来てるのですが、重複行削除ができませんでした。 どなたかご助言、宜しくお願いします!

    • ベストアンサー
    • MySQL
  • エクセルで,同じ列にある複数の重複する名前を抽出する方法はありますか?

    エクセルで,同じ列にある複数の重複する名前を抽出する方法はありますか? たとえばA1~A100に氏名が入力されている中に鈴木一郎,佐々木次郎,高橋三郎など重複して氏名が入力されているとします。どの氏名が重複入力されているか不明なので,オートフィルターで抽出するのはチョット不便です。 この場合,鈴木一郎,鈴木一郎,佐々木次郎,佐々木次郎,高橋三郎,高橋三郎と言うように上から順番に重複している氏名を抽出して表示する関数はありますか?

  • 「次郎」と「二郎」・・・どちらが多い?

    「太郎」には「次郎」 「一郎」には「二郎」 「太郎」と「一郎」は全く違うのに、「次郎」と「二郎」はどちらも「じろう」と同じ読み方です。 どうでもいいけど、ちょっと不思議・・・ そんなことを考えていたら、「次郎」と「二郎」ではどちらが多いものか、興味が湧きました。 「~次郎」と「~二郎」のパターンも含めて、実在の有名人を思いつくまま上げてみていただけますか? ついでに、どちらが多いかの予想もお聞かせ下さい。 では宜しくお願いします。

  • 関数を使って重複するデータを抽出するには?

    今各年度の重複データの抽出の方法がわからなくて困っています。 H20年度         平成21年度 ID   氏名   住所  ID   氏名   住所 102 山田太郎  東京  505 山田次郎  福岡 205 山田花子  京都  603 山田五郎  滋賀 505 山田次郎  福岡  205 山田花子  京都 のような表があって H20と21で重複する人を別表に抽出したり、逆に重複しない人を抽出するにはどのような関数を使えばいいのでしょうか? よろしくお願いします

専門家に質問してみよう