jika Anda memiliki Ruby (1.9+)
#!/usr/bin/env ruby
b=File.read("file2").split
open("file1").each do |x|
x.chomp!
puts x if !b.include?(x)
end
Yang memiliki kompleksitas O (N ^ 2). Jika Anda ingin peduli dengan kinerja, inilah versi lain
b=File.read("file2").split
a=File.read("file1").split
(a-b).each {|x| puts x}
yang menggunakan hash untuk melakukan pengurangan, begitu juga kompleksitas O (n) (ukuran a) + O (n) (ukuran b)
berikut sedikit patokan, milik pengguna576875, tetapi dengan 100K baris, di atas:
$ for i in $(seq 1 100000); do echo "$i"; done|sort --random-sort > file1
$ for i in $(seq 1 2 100000); do echo "$i"; done|sort --random-sort > file2
$ time ruby test.rb > ruby.test
real 0m0.639s
user 0m0.554s
sys 0m0.021s
$time sort file1 file2|uniq -u > sort.test
real 0m2.311s
user 0m1.959s
sys 0m0.040s
$ diff <(sort -n ruby.test) <(sort -n sort.test)
$
diff
digunakan untuk menunjukkan tidak ada perbedaan antara 2 file yang dihasilkan.