Rubino: come abbinare un doppio apice in un'espressione regolare
Domanda
Sto cercando di rimuovere alcuni virgolette ( ") caratteri da un file di testo utilizzando un uno di linea Rubino, con scarso successo.
Ho provato quanto segue e alcune varianti, senza successo.
ruby -pe 'gsub(/\"/,"")' < myfile.txt
Questo mi dà il seguente errore:
-e:1: Invalid argument - < (Errno::EINVAL)
Sono in esecuzione di Ruby su una macchina di vittoria:
rubino 1.8.6 (2007-09-24 patchlevel 111) [i386-MSWIN32]
Qualche idea?
Soluzione
appare come cmd citando l'inferno -. Notare che le singole citazioni sono prive di significato nella shell cmd
ruby -pe "gsub(34.chr,'')" < filename
, ma questo è probabilmente meglio:
ruby -pe "$_.delete!(34.chr)" < filename
Altri suggerimenti
Come su:
ruby -e 'puts $stdin.read.gsub(34.chr,"")' <myfile.txt
ruby -pe 'gsub(/\"/,"")' myfile.txt
suona come il problema è con il guscio.
Il messaggio di errore è da Ruby, così sembra Rubino sta ricevendo il <
come argomento. Ciò significa che la shell non sta facendo alcun reindirizzamento.
Non ho una macchina Windows a portata di mano in modo che avrei doppio controllo che si stanno ottenendo il reindirizzamento prima a destra. A prima vista penso che il < myfile.txt
dovrebbe essere <myfile.txt