Sto riscontrando un problema con grep. Ho un file http://pastebin.com/HxAcciCa che voglio controllare per alcuni modelli. E quando mi "sto cercando di cercare restituisce grep tutte le linee a condizione che il modello esiste già nel file specificato.Perché grep corrisponde a tutte le linee indipendentemente dal modello
per spiegare più questo è il codice che sto correndo
grep -F "ENVIRO" "$file_pos" >> blah
No . importa che cosa provo, anche se mi forniscono un'intera linea come bash modello restituisce sempre tutte le linee
Queste sono varianti di quello che sto cercando:
grep -F "E20" "$file_pos" >> blah
grep E20 "$file_pos" >> blah
grep C:\E20-II\ENVIRO\SSNHapACS480.dll "$file_pos" >> blah
grep -F C:\E20-II\ENVIRO\SSNHapACS480.dll "$file_pos" >> blah
anche per alcune strane ragioni quando si aggiunge il - x opzione per grep, it non restituisce alcuna riga nonostante il pattern esatto esista.
Ho cercato il web e la documentazione di bash per la causa ma non ho trovato nulla.
Il mio test finale è stato il seguente
grep -F -C 1 "E20" "$store_pos" >> blah #store_pos has the same value as $file_pos
ho pensato che forse stava stampando le righe dopo il risultato, ma che non era il caso. Stavo usando il file blah per vedere l'output. Anche io sto usando Linux rebecca alla menta. Infine, anche se la denominazione è abbastanza familiare questa domanda non è simile a Why does grep match all lines for the pattern "\'"
E infine vorrei dire che sono nuovo di bash. Sospetto che l'errore potrebbe essere dovuto al file principale http://pastebin.com/HxAcciCa piuttosto che al codice?
Stai accodando a 'blah'. Dov'è la parte in cui la tronchi per essere vuota? –
Cose come 'grep -F C: \ E20-II \ ENVIRO \ SSNHapACS480.dll" $ file_pos "' non può funzionare, i backslash devono essere preceduti da escape o quotati se vuoi che vengano passati a grep. Quindi: 'grep -F 'C: \ E20-II \ ENVIRO \ SSNHapACS480.dll'" $ file_pos "'. E questo può essere combinato con '-x'. Ma quel problema dovrebbe avere l'effetto opposto: non dovresti avere corrispondenze, piuttosto che ogni linea come una corrispondenza. – hvd
problema con le terminazioni di riga nel file? controlla hexdump o 'cat -vET nomefile'. –