удаление повторов в файле

Опять же вернемся к нашему любимому файлу вида login:pass.

Итак, у нас есть файл, где содержится бесконено много строк вида login:pass и нам надо удалить повторные строки. Ходят слухи, что реализация такой функции есть в Excel’е и его аналоге Calc’е, однако я ее не нашел (может быть плохо искал).

Для того чтобы решить эту задачу, мне пришлось написать такой скромный скриптик, и снова на Ruby.

Скрипт:

#!/usr/bin/ruby
n=ARGV.size
if n<=0
puts “Not enought arguments\n <input file> <output file> -[s] -[du]\n [-s] sort\n [-d] downcase\n [-u] upcase ”
exit
end

infile=ARGV[0]
if n>1 and ARGV[1]!=’-s’ and ARGV[1]!=’-d’ and ARGV[1]!=’-u’ then outfile=ARGV[1] else outfile=infile+”_out” end

i=0
words=Array.new
str=” ”
begin
file=File.new(infile)
puts “Read file #{infile}…”
while str!=nil
str=file.gets
if str!=nil
words[i]=str.to_s.chop
i+=1
end
end
file.close
rescue => e
puts “File read error:#{e}”
exit
end

if ARGV.include?’-d’
puts “Downcase…”
words.each {|x| x.downcase!}
end

if ARGV.include?’-u’
puts “Upcase…”
words.each {|x| x.upcase!}
end

puts “Delete repetitions…”
words.uniq!

if ARGV.include?’-s’
puts “Sort…”
words.sort!
end

puts “Create output file #{outfile}…”
begin
File.open(outfile,”w”) do |sfile|
words.each {|x| sfile.puts x }
end
rescue => e
puts “Create file error:#{e}”
end

На вход подаются такие параметры как:

  • input file – входной файл
  • output file – имя выходного файла
  • ключ -s – сортировка
  • ключ -d – опустить регистр
  • ключ -u – поднять регистр

Надеюсь не все знают эксель лучше меня и кто-нибудь воспользуется этим скриптом.

No Comments.

Leave a Reply

(обязательно)

(обязательно)