• ベストアンサー

Linuxの結合に関するコマンド

Linuxのコマンドラインについて伺いたいことがあります。 やりたい操作は以下のような結合に関するコマンドです。 fileAには 1 apple 2 orange fileBには 3 apple 5 banana と書かれているとします。 重複している部分は結合し、かつその和を求めて以下のような fileC 4 apple 2 orange 5 banana を出力させるようなコマンドってなにかありますか? よろしくお願いします。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

一応補足しておくと, #2 の方針も「全く不可能」というわけではありません. ただし「おかしな方向に努力と根性を働かせる人」向け. ふつ~の人は awk なり perl なりといったスクリプト言語でやるところでしょう.

thjki6624
質問者

お礼

ありがとうございます。

その他の回答 (4)

  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.4

和を取るのについては通常コマンドではできませんでした、見落としです。 となるとawkなのですが、No.1の方がawkと言って説明しないのは 「それは自分で考えろ」と言う意図と私は読み取りまして、 私もそれに同意しています。 上記の処理を行わないと行けない状況にある人であれば、この時点でそれくらいは勉強しておく必要があるのでは、と考えます。 一時ファイルが許されるなら2列目の項目を取り出したファイルを作ってそれら全ての行についてgrepとかという手もありますね。 規模感と状況に合わせて選択かと思います。

thjki6624
質問者

お礼

自分で調べるのも重要ですが、聞いてすぐ解決できる問題ならば聞いてしまった方が効率がいいのも事実です。 私は初心者なので、簡単にできる事柄の区別がまだ出来ていません。 だから質問しました。

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

>上の例だとawkをどうやって使えばいいんですか? 第2フィールドの値をキーにして加算していけばいいです。 そして全部終わったところでまとめて出力。

  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.2

catとsortかuniq、ここらへんはUNIXの文字列コマンドを一通り見れば分かるはず、メジャーなのはそんなにない。

thjki6624
質問者

お礼

そのあたり考えたんですけど、重複しているものの和をとるってなると、どれもうまくいかない感じがするんですよね。。

  • localica
  • ベストアンサー率52% (202/385)
回答No.1

awk

thjki6624
質問者

お礼

上の例だとawkをどうやって使えばいいんですか?