Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 tongue

#!/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