2010-09-07 14 views
7

ho usato la seguente sintassi al fine di trovare l'indirizzo IP sotto /etc: messaggio di errore

(risposta da Dennis Williamson nel sito superuser)

"grep linea troppo lungo" ma ho l'grep messaggio": linea troppo lunga ".

Qualcuno ha idea di come ignorare questo messaggio e perché ottengo questo?

grep -Er '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' /etc/ 
    grep: line too long 

risposta

5

Usa trovare per costruire una lista di file da grep,

find /etc -type f -print0 | xargs -r0 grep -E '\<([0-9]{1,3}\.){3}[0-9]{1,3}\>' 

In ritrovamento generale, è un modo più flessibile di attraversare i file system e la costruzione di elenchi di file per altri programmi.

+1

Il messaggio di errore non viene dalla shell, cioè non è un problema di un elenco di argomenti, che è troppo lungo. – maxschlepzig

+0

Sì, e trovare/xargs è spesso usato per risolvere * quel * problema. Questo non è un problema, ma l'uso di find/xargs lo risolve comunque. – jmtd

+0

@jmtd Funziona magnificamente, +1. – Hazok

20

La soluzione find/xargs non ha funzionato per me, ma ha provocato lo stesso errore.

Ho risolto questo problema utilizzando l'opzione grep -I (ignora file binari). Nel mio caso ci deve essere stato un file binario nella lista di file da cercare che non ha interruzioni di riga, quindi grep prova a leggere in una linea gigantesca che è troppo grande. Questa è la mia ipotesi su cosa significhi questo errore.

ho avuto l'idea da: http://web.archiveorange.com/archive/v/am8x7wI0r0243prrmYd4

Questo potrebbe non funzionare per voi, naturalmente se c'è un file di testo con una linea che è troppo lungo.

+0

Giusto per rendere chiaro agli altri, l'opzione è maiuscola I ("-I") come in India, non una "l" come in lima. – riderchap

+0

@riderchap Contento di aver letto il tuo commento. Farò un tentativo con il cappuccio, più tardi. Dalle risposte su questo da Shorin e la risposta di jmtd, sembra che ci siano due problemi. Un problema in cui l'elenco dei file è troppo lungo, quindi un problema era la linea effettiva in un file è troppo lungo. Nel mio caso era la lista dei file e l'opzione jmtd è la migliore. Nel caso in cui la linea in un file sia troppo lunga, sembra che l'opzione di Shorin sia la migliore, ma non ho il caso di provarla. Potrebbe anche essere possibile che ignorando i binari è caduto Shorin sotto la soglia per il conteggio massimo nella lista dei file. – Hazok

+1

Ah! Grazie. L'ho fatto sembrare un'India al posto di Lima. – Shorin