Il titolo parla da solo. Voglio solo sapere se esiste, non dove è. C'è un solo liner per raggiungere questo obiettivo?Qual è il modo migliore per cercare una stringa in un file?
risposta
File.open(filename).grep(/string/)
Carica l'intero file in memoria. Se hai a che fare con file di grandi dimensioni, preferisceli delirarli.
Ciò significa caricare una riga alla volta, anziché l'intero file.
File.foreach(filename).grep(/string/)
E 'buona norma pulire dopo te stesso piuttosto che lasciare gestire il garbage collector ad un certo punto. Questo è più importante se il tuo programma è di lunga durata e non solo uno script veloce. L'utilizzo di un blocco di codice garantisce che l'oggetto File
venga chiuso quando il blocco termina.
File.foreach(filename) do |file|
file.grep(/string/)
end
In questo modo viene rilevato un descrittore di file che potrebbe causare un problema grave. Ecco un'alternativa più pulita che chiuderà il file dopo l'uso.'open ('some.txt') {| f | f.grep (/ string /)} ' –
E porta anche a caricare l'intero file in memoria. 'open (" some.txt ") {| f | f.each_line.detect {| line | /re/.match(line)}} – rewritten
-1 perché per qualche motivo restituisce false quando dovrebbe essere vero. Indagare perché. – kgpdeveloper
grep for foo OR bar O baz, rubato da ruby1line.txt.
$ ruby -pe 'next unless $_ =~ /(foo|bar|baz)/' < file.txt
Beh, sembra eed3si9n ha uno di linea verso il basso, ecco la soluzione più a lungo:
f = File.new("file.txt")
text = f.read
if text =~ /string/ then
#relevant code
end
È necessario citare il nome del file. –
yeah ha appena notato che hai postato questo one-liner –
: "qualunque sia (x) se File.read (" file.txt ") = ~/regex /' – rampion
Se il sistema operativo ha un pacchetto grep, è possibile utilizzare una chiamata di sistema:
system("grep meow cat_sounds.txt")
Restituisce true se grep
restituisce qualcosa, false se non lo fa.
Se ti trovi su un sistema con grep
, potresti trovare che questo è il modo "migliore" perché Ruby può essere lento quando si tratta di operazioni sui file.
non ha ancora specificato il suo os = \ –
Penso che sia meglio Supponiamo che sia sano di mente. –
È stato abbastanza divertente essere uno rakefile che stavo creando quando ho trovato questa domanda, quindi posso anche ridimensionarlo a sh "grep meow cat_sounds.txt" :-) – ChrisInCambo
Questa legge il file solo per la prima apparizione di 'stringa' e lo elabora riga per riga - non leggere l'intero file in una sola volta.
def file_contains_regexp?(filename,regexp)
File.foreach(filename) do |line|
return true if line =~ regexp
end
return false
end
- 1. Qual è il modo migliore per cercare GitHub?
- 2. Qual è il modo migliore per convertire enum in stringa?
- 3. Qual è il modo migliore (più efficiente) per cercare il contenuto in un file e modificarlo con PHP?
- 4. Qual è il modo migliore per verificare se una stringa contiene un URL in Java/Android?
- 5. qual è il modo migliore per verificare se una stringa esiste in un altro?
- 6. Qual è il modo migliore per cercare prefissi nell'implementazione di una mappa?
- 7. Qual è il modo migliore per svuotare una directory?
- 8. Qual è il modo migliore per dichiarare una variabile globale?
- 9. qual è il modo migliore per modificare file CSV
- 10. C# in VS2005: qual è il modo migliore per verificare se una stringa è vuota?
- 11. Qual è il modo migliore per comprimere le righe di una SELECT in una stringa?
- 12. Qual è il modo migliore per generare una sitemap?
- 13. Qual è il modo migliore per impaginare una classe C#?
- 14. Qual è il modo migliore per convertire String in ByteString
- 15. Qual è il modo migliore per "periodicamente" sostituire i caratteri in una stringa in Python?
- 16. Qual è un modo migliore per verificare se una stringa è un numero intero su iPhone?
- 17. Qual è il modo migliore per scrivere il contenuto di un StringIO in un file?
- 18. Qual è il modo migliore per reimparare una lingua?
- 19. Qual è il modo migliore per creare una ricerca whois?
- 20. Qual è il modo migliore per autorizzare una chiavetta USB
- 21. Qual è il modo migliore per testare una RedirectToAction?
- 22. In C#, qual è il modo migliore per analizzare questo valore da una stringa?
- 23. Qual è il modo migliore per sfuggire ai caratteri specifici di HTML in una stringa (PowerShell)?
- 24. qual è il modo migliore per rimuovere gli ultimi n caratteri di una stringa (in Ruby)?
- 25. Qual è il modo migliore per ottenere una stringa formattata per rappresentare l'offset UTC?
- 26. Qual è il modo migliore per testare una stringa vuota in Go?
- 27. Qual è il modo migliore per formattare una stringa in Scala?
- 28. Qual è il modo migliore per controllare una stringa vuota in Delphi?
- 29. c'è un modo per cercare un set di diff per una stringa particolare per un file?
- 30. Qual è il modo migliore per analizzare questo in C++?
scusa, mi piace la tua domanda, ma, per favore, rinominala. Sono stato intercettato nella funzione di funzione "detect" (return first element, not all, uh) – gaussblurinc