• 締切済み

2つのファイルを結合してファイルを出力する方法

以下のような二つのファイルがあるとします。 1_input.csv: num,cap 1,A 2,B 3,C 4,D 5,E 2_input.csv: num,sma 2,a 2,b 4,c 5,d 5,e この2つのcsvファイルからnumを比較して同じ値の時に列を追加するような以下のファイルを作りたいです。 output.csv: num,sma,cap 2,a,B 2,b,B 4,c,D 5,d,E 5,e,E awkなどを使って一列目を比較してpasteで結合などを考えましたが知識不足でうまくできない状況です。どなたかご教授いただけませんでしょうか。よろしくお願いします。

みんなの回答

  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.1

UNIX系のコマンドが使える環境ならjoinでできる内容であるように見えます。少なくとも、提示された例については処理できました。 $ join -t "," 2_input.csv 1_input.csv num,sma,cap 2,a,B 2,b,B 4,c,D 5,d,E 5,e,E

関連するQ&A

  • ネストされた配列からのCSV出力の方法

    はじめまして。 勉強中のRuby(2.0)で、 以下のようにCSVファイルの書式変換をしようとしています。 ■変換前 # 入力ファイル1(input1.csv) A, B, C, D A1,B1,C1,D1 A2,B2,C2,D2 A3,B3,C3,D3 # 入力ファイル2(input2.csv) B C ■変換後(output.csv) B, C, A, D B1,C1,A1,D1 B2,C2,A2,D2 B3,C3,A3,D3 ■変換内容 入力ファイル1に対して、入力ファイル2で指定された文字をヘッダーにもつ列を 順次先頭に移動していき、それを、出力ファイルとする。 ■経緯 いろいろ試行錯誤をしながら、以下のような配列(output_ary)を 作るところまではできたのですが、 これをcsvに書き出す術がわからずにおります。 (カッコやダブルコーテーションがついたままになったり、 改行がされなかったり..) (pp output_ary の結果) pp output_ary #=> [["B1","C1","A1","D1"], ["B2","C2","A2","D2"], ["B3","C3","A3","D3"], ["B4","C4","A4","D4"]] お手数ですが どなたかご教示ください。 もちろん、「上記 output_ary のようなモノを作らなくてもこうすればできるよ」というご回答でもOKです。 よろしくお願いいたします。

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

    以下にリストファイルと、インプットファイルがあります。 リストファイルのそれぞれにインプットファイルの中で何個一致するかを出力させたいです。 目的にかなう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 ・・

  • VBスクリプトでcsvファイルを比較

    別々のCSVファイルがありますが同じ形式にしておいて、 a.csv a,b,c b.csv d,e,f aとd、bとe、cとfと順番に比較する方法を教えて頂けますでしょうか。

  • awkで二つのファイルを比較し出力する方法

    UNIXで二つのファイルを使って別ファイルを出力する 処理をしたいのですが、awkで二つのファイルを扱う方法 が分かりませんでした。 やりたい処理は以下のような事です。 ファイルAの1行目"AAA B"と同じ行がファイルBにあったら、ファイルAの"AAA B"の次の行に、 ファイルBの次の行"YYY bbb"を挟み込みます。 もし、ファイルBに同じ行がなかったら、 ファイルAの次の行に"NG"を挟み込みます。 [ファイルA] AAA B ZZZ B AAA C ZZZ C AAA D ZZZ D [ファイルB] AAA B YYY bbb AAA C YYY bbb [出力ファイル] AAA B YYY bbb ZZZ B AAA C YYY ccc ZZZ C AAA D NG どなたか良いスクリプトありましたら 教えていただけないでしょうか。 よろしくお願いします。

  • 複数のcsvファイルをマクロ(VBA)で取り込みたい

    複数のcsvファイルをマクロ(VBA)で取り込みたい csvファイルの中身が、 20090507 120508 osaka 項目1,項目2,項目3,・・・・・,項目10 a1,a2,a3,・・・・・,a10 b1,b2,b3,・・・・・,b10 c1,c2,c3,・・・・・,c10 や 20090507 132529 hokkaido 項目1,項目2,項目3,・・・・・,項目10 d1,d2,d3,・・・・・,d10 e1,e2,e3,・・・・・,e10 f1,f2,f3,・・・・・,f10 となっているcsvファイルが特定のフォルダの中に100以上あります。 このcsvふぁいるの5行目だけをaccessに書き込んでテーブルに追加していきたいと思っています。 項目1,項目2,項目3,・・・・・,項目10 a1,a2,a3,・・・・・,a10 d1,d2,d3,・・・・・,d10 このようなテーブルができればいいのですが・・・ csvファイルを開く→5行目をテーブルに追加→csvファイルを閉じる(削除する)→次のcsvファイルを開く→5行目をテーブルに追加→csvファイルを閉じる(削除する) この流れでいいと思うのですが方法が分かりません。 丸投げですがよろしくお願いします。

  • ある列をキーにして、複数行を1列で出力したい

    AWKで、以下の処理をしたいです。 ・1列目をキーにしたテーブルを作る ・1列目共通で2列目が複数ある場合は、並べて記載したい。 どなたか、スクリプト案お願いします。 例 Input file A あ B あ B い C い Output file A あ B あ/い C い

  • batファイルについて教えてください

    以下の要件を満たすbatファイルを作成したいと思います。 ・5区切りのCSVファルイを以下のように変数に代入する  読み込みファイル例 列 a , b , c , d , e 111,222,333,444,555 111,222,222,666,777 111,111,123,888,999 行全体を%%a、c列を%%c e列を%%eへ代入 a,b,c,d,e ⇒ %%a c ⇒ %%c e ⇒ %%e ・%%cに3を含むものを確認したい ・if文を使用に3を含むものを処理対象にしたい ・3を含むものに処理を行った後それぞれ以下のようにファイル書き出しを実施したい。     %%a ⇒ zenbun.txt %%c + %%e ⇒ bassui.txt ・処理終了 forやifを使うんだろうなぁ、、程度しかわからず全く詳細な構成がわかりません。 どなたか教えていただけませんでしょうか? よろしくお願いします。

  • ファイル出力について。

    こんにちわ。 String型配列に格納した文字列5つを、それぞれ改行し、 ファイルに出力したいのですが、やり方がわかりません。 例: String[] test = new String{"a","b","c","d","e"}の場合 ↓test.txtの内容 --------- a b c d e --------- わかる方いらっしゃいましたら、ご教授願います。 宜しくお願いします。

    • ベストアンサー
    • Java
  • 2ファイルの比較

    2ファイルの比較 中身が以下のようなファイルがあります。 ---ファイルA中身--- a c c d e f f ----------------- ---ファイルB中身--- a a b b b c d e g ----------------- この2ファイルから、以下のようなファイルを作りたいです。 ---ファイルC中身--- b b g ----------------- つまり、ファイルBにはあって、ファイルAにはない行をファイルCに入れたいです。 while($line_B = <FILEB>){ while($line_A = <FILEA>){ @A = split(/,/,$line_A); if($line_B !~ /$line_A/){ print FILEC $line_B; } } seek(FILEA,0,0); } としてみたのですが、全然ダメです。理由も分かってます。 が、お手上げです。ご教授お願いします。

  • 2つのエクセルのデータを結合する方法で困っています。

    2つのエクセルのデータを結合する方法で困っています。 下図のE部分だけをファイル1からファイル2に反映させたいのですが、 行が追加されたり、削除されたりしているため、単純に貼り付けできません。 (下の例では、ファイル1>2の過程で【い】【え】が削除、【も】【か】が追加、【あ】のB【う】のCの内容が変更になっています) 何かいい方法はないでしょうか? ファイル1:       A   B  C   D  E   1あ  ●  ●  ●  ●  ■   2い  ●  ●  ●  ●  ■   3う  ●  ●  ●  ●  ■   4え  ●  ●  ●  ●  ■   5お  ●  ●  ●  ●  ■ ファイル2:       A   B  C   D  E   1あ  ●  ▲  ●  ●     2も  ●  ●  ●  ●     3う  ●  ●  ▲  ●     4お  ●  ●  ●  ●     5か  ●  ●  ●  ●   こうしたい:       A   B  C   D  E   1あ  ●  ▲  ●  ●  ■   2も  ●  ●  ●  ●     3う  ●  ●  ▲  ●  ■   4お  ●  ●  ●  ●  ■   5か  ●  ●  ●  ●   Excelのバージョンは2000です。実際は1000行×30列×10シートくらいあって、結構な頻度で結合するのですが、手でやっていて大変なのです。。

専門家に質問してみよう