удаление повторов в файле
Опять же вернемся к нашему любимому файлу вида 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
endinfile=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” endi=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
endif ARGV.include?’-d’
puts “Downcase…”
words.each {|x| x.downcase!}
endif ARGV.include?’-u’
puts “Upcase…”
words.each {|x| x.upcase!}
endputs “Delete repetitions…”
words.uniq!if ARGV.include?’-s’
puts “Sort…”
words.sort!
endputs “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 – поднять регистр
Надеюсь не все знают эксель лучше меня и кто-нибудь воспользуется этим скриптом.