• 締切済み

シェルスクリプトの制御構文について

いつもお世話になっております。 当方、RHELで bashシェルを使用しており、制御構文を用いて 『 file1.txt にある数値が file2.txt に含まれているかどうか、また、いくつ含まれているかカウント』するスクリプトを作りたいと思っております。 ファイルの中身は下記のようになっています。 [file1.txt]       [file2.txt] 10250         10064     10298         10250 11674         12866 13298         13119 28952         13201 34966         13298 37641         37641         上記の例であれば、10250,13298,37641 が共通のものなので その数 3 というものを求めたいのです。 while文やfor文を用いて繰り返し処理をするのでは、と思い調べてはみたのですが 知識が乏しく構文を書くことが出来ませんでした。 また、PerlやRuby等使わず、シェルスクリプトのみで実行したいです。 勉強不足でとても初歩的なことを伺っているとは重々承知ですが、 どなたかお力を貸していただけないでしょうか。 宜しくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

ソート済みの2ファイルの共通部分を取るのはcommコマンドで出来ます。 comm -12 file1.txt file2.txt | wc -l ファイルがソートされてないのなら、ソートしてから処理します。 comm -12 <(sort file1.txt) <(sort file2.txt) | wc -l

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

> その数 3 というものを求めたいのです それだけなら fgrep -f file1.txt file2.txt | wc -l とかだけど。制御構文とか関係なく。