#1 Le 23/02/2010, à 11:40
- \\Ouranos//
grep en ruby : Il fonctionne, mais ne renvoie rien
Bonjour,
Pour apprendre à manier, entre autres, la libFile de Ruby, j'ai essayé de recoder les commandes shell "de base". En ce moment, j'essaye de recoder grep. Voilà ce que donne le code de test que j'ai fait (je précise que la mise dans une fonction est volontaire) :
#!/usr/bin/env ruby
# grep.rb
# Écrit par Ouranos
def search(pattern, file)
pattern.to_s
array = Array.new
result = Array.new
if File.directory?(file) == true
list = Dir.glob("file/**")
list.each do |f|
f.each_line do |l|
array += l
end
result += array.grep(pattern)
end
else
file.each_line do |l|
array.push(l)
end
result += array.grep(pattern)
end
result.each do |r|
puts r
end
return result
end
search(ARGV[0], ARGV[1])
Je teste avec un fichier de test, qui contient le pattern "truc" :
ruby grep.rb truc test.rb
Et ça me renvoie rien ! Quelqu'un a une solution ?
Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.
Hors ligne
#2 Le 23/02/2010, à 12:04
- tshirtman
Re : grep en ruby : Il fonctionne, mais ne renvoie rien
oui, mais elle va pas te plaire
#!/usr/bin/env python
import re
from optparse import OptionParser
parser = OptionParser()
(options, args) = parser.parse_args()
def grep(file, pattern):
for l in open(file).readlines():
if pattern.match(l):
print l
if __name__ == '__main__':
r = re.compile(args[0])
for i in args[1:]:
grep(i, r)
Hors ligne
#3 Le 23/02/2010, à 19:02
- \\Ouranos//
Re : grep en ruby : Il fonctionne, mais ne renvoie rien
Je ne comprends pas ton code... ce langage est obscur, décidément... ><
Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.
Hors ligne