• ベストアンサー

二つのファイルから条件に一致する行を抽出

AとBの二つのファイルがあります。 Aの2列目3列目の間に存在するBの2列目のファイルを抽出してCのファイルを作成したいです。 awkのifでチマチマ作ればできるとは思うのですが、他に簡単にできる方法はないでしょうか? awkだけでなくperlやpythonなどでも問題ないです。 <A> A 10 20 B 30 40 C 50 70 D 90 110 <B> あ 15 い 25 う 55 え 75 お 95 <C> あ 15 う 55 お 95

  • Python
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • Wap58
  • ベストアンサー率33% (29/87)
回答No.1

use strict; open K,'a.txt'; my @an = <K>; close K; open G,'b.txt';#<= my @bn = <G>; close G; for(@an){ my $an = [split(' ')]; for(@bn){ my $bn = [split(' ')]; print "$_" if $an->[1] < $bn->[1] and $bn->[1] < $an->[2] ; } }

hiroponsettu
質問者

お礼

ありがとうございました。

関連するQ&A

  • EXELで条件抽出をしたい…

    教えて下さい。EXELで作った下のような表(データ)がありその条件に合う人を抽出したいんですが…       A   B   C   D 1 Aさん 1234  2345  3456  4567 2 Bさん 6788  1234  5556  7778 3 Cさん 7788  7778  5443  7789 A~Dのセルにランダムに並んだ数字を入力している(ここでは、番号(1234)と入力している)人を関数を使い一発表示したいんですが。  A列だけに1234という数字を入力している人を抽出し、条件にあえば「○」という表示をできるようにはIF関数を使いできましたが、 AさんのA列、B列、C列全てを検索範囲に入れた、(たとえば「1234」と入力しているなら「○」等で表示(抽出)したいんですが…それができる関数を教えて下さい。列ごとしかできないのか…??? 分かりにくいですか? (^_^; 宜敷お願いします。

  • リストファイルに一致する個数のカウントについて

    以下にリストファイルと、インプットファイルがあります。 リストファイルのそれぞれにインプットファイルの中で何個一致するかを出力させたいです。 目的にかなうawkや perlなどのスクリプトを教えてほしいです。 list.txt a b c d ・・ input.txt 1 a b c 2 a d 3 4 b c ・・ output.txt a 2 b 2 c 2 d 1 ・・

  • 条件にあう複数の行を別のシートに抽出する

    例 データ Sheet2のA1に(条件の)2 Sheet1 A列  B列  C列  D列 コード 名前 計数 1 A 12 2 B 13 1 2 B 14 2 4 D 15 5 E 16 6 F 17 2 B 18 3 3 C 19 5 E 20 D列は =IF(A2=Sheet2!$A$1,MAX($D$1:D1)+1,"") 下方向に式を複写。 Sheet2に行って =INDEX(Sheet1!$A$1:$D$100,MATCH(ROW()-1,Sheet1!$D$1:$D$100,0),COLUMN()) 式を右方向に式複写 A2:C2の式を下方向に式複写。 結果 2 2 B 13 2 B 14 2 B 18 #N/A #N/A #N/A ーー #N/Aを空白にするには ROW()-1がSheet1のD列のMAXを超えていると空白と いうIF文を加えると良い。   以前、上記のように質問のご回答を頂いたのですが、更に質問があって再度聞きたくて、再質問します。上記の場合は、「2」だけでしたができました。それで後の2以外の「1~6」について、Sheet3・4・5・6・7に抽出したいと思いますが、関数では無理でしょうか。初心者で色々な記事もみますがよくわかりません、お教え下さいませんでしょうか、お願いします。

  • 検索値に一致するデータ行の抽出方法(エクセル)

    例えば・・・ ↓データ _ABCDE 1あカa1122 2あキb1223 3いクc1324 4うケd1425 5うコe1526 のようなデータがあったとして、別のシートの任意のセル(例えばA1)に「あ」と入力し、C列に「カ」を入力することでC列以降のデータをD列以降に並べたいのですが・・・ 結果↓ _ABCDE 1う←任意のセル:データシートのA列の検索値 2 3__*項目* 4__ケd1425 5__コe1526 ___↑ ___データシートのB列を検索する値を入力するC列    *データの行数は5000は軽くあります。 *データシートは、受け取る側のシートとは別のファイルにしたい。 *受け取る側は、1~100行になります。(ファイルによります) *受け取る側のファイルは、100ファイルぐらいになります。 *いずれのファイルも列数は2,30列程度です。 *格納するフォルダは同じです。 *できればフォルダ毎別のPCに持っていっても作業できるようにしたい。 環境:構築していくマシンは、Windows2000Pro,Excel2000です。 (実際の抽出作業もこれがメインのPCですが、Win95、98,Excel97、2000でも抽出作業ができれば嬉しいです。)

  • accessの不一致抽出

    accessで2つのテーブルで一致しないものを抽出しようとしてますが、抽出された数が合いません。 テーブルは下記のように2つあります テーブルA AAA ABA CCC DDC DDC テーブルB AAA ABB CCC DDC DDD これで AとBのテーブルをつなぎAのみに存在するものを抽出するのに Aを元テーブルで対象テーブルをBにして、 BのほうにIs Nullを入力して、不一致分だけ抽出して新しいテーブルを作成してます。 同じようにその逆で、Bにのみ存在しているものを抽出してテーブルを作成しました。 最後に、同じようにAとBをリレーで繋ぎ、リレーのプロパティの「1」で、AとBで一致するものだけを抽出してテーブルを作成しました。 Aのみに存在(テーブルA') Bのみに存在(テーブルB') 両方に存在 (テーブルC) そこでテーブルC-テーブルA’の数と、テーブルC-テーブルB'の数を比較して、同じになると思ったんですが、数が異なってしまいました。 おそらく値の「DDC」の所の抽出が問題だと思い、 プロパティで「固有の値」を「はい」にしてみましたが変わりませんでした。 不一致で抜き出したいのは、「DDC」が、テーブルAには2つ、 テーブルBには1つ値があるので、テーブルB’に1つだけ不一致を抽出できればベストなんですが。 access初心者な為、根本的にやり方や考え方が間違っているかもしてませんし、状況説明も下手ですみません。 どなたかご教授いただければと思っております。

  • エクセルで特定のセルの条件の行を抽出

    エクセルで A  B  C  D… 1 OK  100  30  20 2 ダメ 50   20 30 3 20 10 30 4  OK     3   2 5 良い 3   5   50  と、いうような表があります。 これから、A列がOK又はダメの行だけを抽出して、 別のSheetに A  B  C  D… 1 OK  100  30  20 2 ダメ 50   20 30 3  OK     3   2 と、いうように抽出したいのですが… よろしくお願いします。

  • VBA 条件一致 抽出 ループ

    《シート1》(仮)   A   B  C   1 赤  1 トマト  2 赤  2 いちご 3 赤  3 りんご 4 青  1 ぞう 5 青  2 そら 6 青  3 みず 7 黄  1 ひよこ 8 黄  2 ひまわり 9 緑  1 かえる 10 緑  2 葉 11 緑  3 高原 ・ ・ ・ 《シート2》(マクロ実行後の結果)   A   B   C   D    1 赤 トマト いちご りんご  2 青 ぞう  そら  みず 3 黄 ひよこ ひまわり 4 緑 かえる 葉   高原 ★依頼★《シート1》から《シート2》のような表を作りたい。 《シート1》のような表がある場合、 《シート1》のB列の値が1ならば   《シート2》のA列とB列にそれぞれ《シート1》のA列とC列を 《シート1》のB列の値が2ならば   《シート2》のC列に《シート1》のC列を、 《シート1》のB列の値が3ならば   《シート2》のD列に《シート1》のC列を抽出したい。 またこの際《シート1》は(仮)のシートであり、実際はB列の数字は1からいくつまであるかわからない。数字かある限りこの処理を繰り返し行いたい。 《シート1》B列1値がについては《シート2》のA列とB列に《シート1》のA列とC列を抽出するのはかわらないが、《シート1》のB列の値が2以上のものについては《シート2》のC列以降に横に抽出していきたい。 さらに《シート1》のA列の”黄“の項目のみB列の値は2までしかない。 このような時、 次の項目”緑“の3の値が”黄“の項目の3に重ならないようにしたい。 このような場合、マクロをどのように組んだら良いでしょうか。 VBAのテキストを読んでみましたがなかなかできません。 説明が下手ですみませんがどなたか回答頂けたら幸いです。

  • 番号が一致したら別の列の値を抽出したい

    こんばんわ。 Excelについて教えてください。 A列に数字が1~10と並んでおり、 C列には数字が穴あきで5つ(1,2,4,6,8)あったとし、 A列とC列を比較して比較し、数字が重複した場合は、 D列にある値をB列に抽出したいのですが、行番号を指定して 抽出する事なんてできますでしょうか? ↓こんな事をしたいです。 A列 B列 C列 D列 1  A  1  A 2  B  2  B 3     4  C 4  C  6  D 5     8  E 6  D 7 8  E 9 10

  • エクセルで複数条件に一致する値を抽出する

    お世話になります。 エクセル2007で次のように単語のテストを作成したいのですが,どういう設定をすれば可能でしょうか。 データというシートにはA列に出題テキスト名が上から入力されています。B列には対象学年が入っています。C列にはテキストのページ数が入っています。D列には英単語が入っています。E列には日本語訳が入っています。 問題作成,というシートのA1に「テキスト名」B1に「学年」C1に「開始ページ」D1に「終了ページ」が入力されており,A2からD2にそれぞれ,テキスト名などを入力するようになっています。その横に「問題作成」というボタン(開発タブのなかにあるものを使用)を配置し,このボタンをクリックすると(どんなマクロを組めばいいのでしょうか),A3からB3以下に「データ」というシートの中から,条件に合致する英単語と日本語訳が抽出される,ということをしたいのです。 エクセルの関数はよく使いますし,入力規則も条件付き書式も理解しています。しかし,ここまで複雑な作業は初めてなので,いろいろと試しているのですが,まったく光が見えてきません。 何か説明不足な点がございましたら,補足いたしますので,ご教授,何卒よろしくお願いいたします。

  • エクセルで2つの条件が一致するものを抽出

    エクセルで2つの条件が一致するものを抽出し印を付けたいのですが…    A   B   C  1  100  1.5  あ 2  100  1.5  い 3  200  1.5  あ 4  100  1.2  い のようになデータがあり、AとB共一致するもののDに○(この場合1Dと2Dに○…数字でもいいですが)を表示させたいのですが… いろいろ検索してもわかりません。 どなたか、よろしくお願いします。

専門家に質問してみよう