2013-01-05 5 views
8

Dire stavo scrivendo qualcosa nel mio terminale come:Come si riversa l'output della shell in ruby ​​-e?

ls | grep phrase 

e dopo averlo fatto mi rendo conto che voglio eliminare tutti questi file.

Voglio usare Ruby per farlo, ma non riesco a capire cosa passare.

ls | grep phrase | ruby -e "what do I put in here to go through each line by line?" 
+0

Perché vuoi eliminare i file con Ruby? –

risposta

10

Utilizzare questo come punto di partenza:

ls ~ | ruby -ne 'print $_ if $_[/^D/]' 

Quale restituisce:

Desktop 
Documents 
Downloads 
Dropbox 

Il flag -n significa "loop su tutte le linee in entrata" e li memorizza nella variabile "predefinita" $_. Non vediamo questa variabile molto usata, in parte come reazione istintiva all'abuso di Perl, ma ha i suoi momenti utili in Rubydom.

Queste sono le bandiere comunemente utilizzati:

-e 'command' one line of script. Several -e's allowed. Omit [programfile] 
-n    assume 'while gets(); ... end' loop around your script 
-p    assume loop like -n but print line also like sed 
+0

Questo comando non funziona in Ruby 2.0 apparentemente. Incollato esattamente e ottengo '' 'espressione matematica errata: operando atteso a'/^ D/''' ' –

+0

Beh, sui miei sistemi, usando Ruby 2.0 funziona perfettamente. Tuttavia non è un codice Ruby, deve essere incollato al prompt della shell. Sei stato tu? –

+0

Forse ho saltato un salmerino o qualcosa del genere. Ho provato di nuovo e funziona ora. Grazie per la risposta. –

2

ARGF salverà il vostro bacon.

ls | grep phrase | ruby -e "ARGF.read.each_line { |file| puts file }" 
=> phrase_file 
    file_phrase 
    stuff_in_front_of_phrase 
    phrase_stuff_behind 

ARGF è una matrice che memorizza tutto ciò che avete passato nello script (in questo caso da riga di comando). Si può leggere di più su ARGF qui:

http://www.ruby-doc.org/core-1.9.3/ARGF.html

Per più usi Dai un'occhiata a questo discorso sul Forum Rubino: http://www.ruby-forum.com/topic/85528

+0

Cosa succede se si tratta di un flusso continuo di dati? – Pachonk

Problemi correlati