2つのファイルにそれぞれ文字列が入っているのですが、

これを比較して同じ文字列があった場合にその文字列を抜き出すスクリプトを教えて下さい。

ファイル1
1
1
2
3
5
8
8
8
10

ファイル2
3
3
8

の場合に、出力結果が3と8が出力されるようなスクリプト(コマンド)を探しています。

回答の条件
  • 1人2回まで
  • 登録:2008/07/23 02:21:40
  • 終了:2008/07/23 11:45:00

ベストアンサー

id:hujikojp No.1

hujikojp回答回数101ベストアンサー獲得回数72008/07/23 04:14:36

ポイント30pt

http://en.wikipedia.org/wiki/Comm

% comm -1 -2 aaa bbb
3
8
id:gatcch

commコマンドは知りませんでした。

参考になります。

2008/07/23 11:37:38

その他の回答(4件)

id:hujikojp No.1

hujikojp回答回数101ベストアンサー獲得回数72008/07/23 04:14:36ここでベストアンサー

ポイント30pt

http://en.wikipedia.org/wiki/Comm

% comm -1 -2 aaa bbb
3
8
id:gatcch

commコマンドは知りませんでした。

参考になります。

2008/07/23 11:37:38
id:rubikitch No.2

るびきち回答回数120ベストアンサー獲得回数222008/07/23 07:00:51

ポイント10pt

Rubyで。一方の行をハッシュのキーに格納し、他方の行がハッシュに含まれてるか調べる。

def compare(io1, io2)
  h = {}
  io1.readlines.each {|l| h[l] = true }
  result = []
  io2.readlines.each {|l| result << l if h.has_key? l }
  result.uniq
end

open(ARGV[0]) do |io1|
  open(ARGV[1]) do |io2|
    puts compare(io1, io2)
  end
end
id:gatcch

色々な場合に応用できそうですね。

ありがとうございます。

2008/07/23 11:39:49
id:syntaxerror No.3

syntaxerror回答回数354ベストアンサー獲得回数562008/07/23 07:01:02

ポイント20pt

( ( sort ファイル1 | uniq ) ; ( sort ファイル2 | uniq ) ) | sort | uniq -d

unix の sort と uniq を使えばできます。

実行結果

> cat file1

1

1

2

3

5

8

8

8

10

> cat file2

3

3

8

> ( ( sort file1 | uniq ) ; ( sort file2 | uniq ) ) | sort | uniq -d

3

8

>

id:gatcch

なるほど、各ファイルからダブった部分を消してから

再度sortして重複した部分をuniqで消すと言うことですね。

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

2008/07/23 11:41:33
id:backupper No.4

backupper回答回数95ベストアンサー獲得回数102008/07/23 08:24:36

ポイント25pt

以下でどうでしょう。

cat <(sort ファイル1 | uniq) <(sort ファイル2 | uniq) | grep -v '^$' | sort | uniq -d
id:gatcch

3番の方と同じ考え方ですが、grepを使うところが面白いですね。

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

2008/07/23 11:42:30
id:Mook No.5

Mook回答回数1312ベストアンサー獲得回数3912008/07/23 09:18:11

ポイント30pt

OS 等の情報を記載ください。


これまでの質問から UNIX・LINUX 環境での話かと思うのですが、

下記のコマンドでどうでしょうか。

cat ファイル1 | grep -f ファイル2 | sort -u

id:gatcch

OSはLINUX環境になります。

grepの使い方がエレガントですね。

参考になりました。

2008/07/23 11:43:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません