Wednesday 23 August 2017

Linux Grep No Binary Opzione


grep - Unix, Linux Command Recurse in directory saltare file di pattern matching. Sopprimere i messaggi di errore sui file non esistenti o illeggibili. Portabilità nota: a differenza di GNU grep. grep tradizionale non era conforme a POSIX.2, perché grep tradizionale mancava un opzione - q e la sua opzione - s comportati opzione GNU grep rsquos - q come. Gli script di shell destinati ad essere portabile su grep tradizionale dovrebbero evitare sia q e - s e dovrebbe reindirizzare l'output devnull invece. Trattare il file (s) in formato binario. Per impostazione predefinita, in MS-DOS e MS Windows, grep indovina il tipo di file, cercando il contenuto del primo 32KB letti dal file. Se grep decide il file è un file di testo, si spoglia i caratteri CR da il contenuto del file originale (per rendere le espressioni regolari con e funzionano correttamente). Specificando - U overrules questo congetture, causando tutti i file da leggere e passati al meccanismo di corrispondenza pari pari se il file è un file di testo con coppie CRLF alla fine di ogni riga, questo farà sì che alcune espressioni regolari per sicuro. Questa opzione non ha effetto su piattaforme diverse da MS-DOS e MS Windows. Rapporto scostamenti di byte in stile Unix. Questo interruttore fa sì che grep segnalare scostamenti di byte come se il file fosse file di testo in stile Unix, cioè con caratteri CR spogliato off. Questo produrrà risultati identici a eseguire grep su una macchina Unix. Questa opzione non ha effetto a meno che non - b opzione viene utilizzata anche non ha alcun effetto sulle piattaforme diverse da MS-DOS e MS Windows. Stampa il numero di versione di grep standard error. Questo numero di versione dovrebbe essere incluso in tutte le segnalazioni di bug (vedi sotto). Invertire il senso di corrispondenza, per selezionare le linee non corrispondenti. Selezionare solo le righe contenenti corrispondenze che formano parole intere. Il test è che la sottostringa corrispondente deve o essere all'inizio della linea, o preceduti da un non-word carattere costituente. Allo stesso modo, deve essere o alla fine della linea o seguita da una non-parola carattere costituente. caratteri di parola-componente sono lettere, cifre e il carattere di sottolineatura. Selezionare solo le partite che corrispondono esattamente tutta la linea. sinonimo obsoleto per - i. Uscita un byte zero (il carattere ASCII NUL) anziché il carattere che segue normalmente un nome di file. Ad esempio, grep - lZ emette un byte zero dopo ogni nome di file invece del solito a capo. Questa opzione rende l'uscita inequivocabile, anche in presenza di nomi di file contenenti caratteri insoliti come capo. Questa opzione può essere utilizzata con comandi come trovare - print0. perl -0. sorta - z. e xargs -0 per elaborare i nomi di file arbitrari, anche quelli che contengono caratteri di nuova riga. Per cercare la stringa in un unico file test. sh gatto test. sh divertimento binbash () echo Questo è un test. Termina il nostro script di shell con il messaggio di successo uscita 1 dall'alto uscita grep di file: uscita grep demofile al controllo per la stringa data in più file: in questo caso test. sh e test1.sh gatto test. sh divertimento binbash () echo Questo è un Test. Termina il nostro script di shell con il messaggio di successo uscita 1 cat test1.sh binbash divertimento () echo Questa è una test1. Termina il nostro script di shell con il messaggio di successo exit 0 uscita grep in entrambi i file test. sh e test1.sh: test1.sh: exit 0 test. sh: l'uscita 1 a CASE ricerca maiuscole utilizzando grep - i, ha aggiunto EXIT in test1.sh gatto test1.sh divertimento binbash () echo Questa è una test1. Termina il nostro script di shell con il messaggio di successo, EXIT con 0 exit 0 grep uscita test1.sh test1.sh: exit 0 grep test1.sh prova uscita - i: Termina il nostro script di shell con il messaggio di successo, EXIT con 0 test1.sh: exit 0 due linee con opzione - i, come il suo caso insensitive. Say mi hanno generato il seguente file binario: E dire, voglio trovare le posizioni di tutti zeri (0x00), utilizzando una sintassi grep-like. Il meglio che posso fare finora è: Tuttavia, questa converte implicitamente ogni byte del file binario originale in una rappresentazione ASCII multi-byte, su cui grep non funziona esattamente il primo esempio di ottimizzazione :) C'è qualcosa come un binario per grep Linux Forse, anche, qualcosa che sarebbe a favore di un normale sintassi delle espressioni simili, ma anche per i caratteri di byte - vale a dire, potrei scrivere qualcosa di simile a un (X00) b e zero o più occorrenze di byte 0 tra i byte di una (97) e B (98) EDIT: Il contesto è che Im lavorando su un driver, dove l'acquisizione dei dati a 8-bit qualcosa va storto nei dati, che possono essere kilobyte fino a megabyte, e Id piace verificare la presenza di particolari firme e dove si verificano. (Fino ad ora, sto lavorando con frammenti kilobyte, quindi l'ottimizzazione non è così importante - ma se comincio ottenere alcuni errori nella cattura lunghi megabyte, e ho bisogno di analizzare quelli, la mia ipotesi è vorrei qualcosa di più ottimizzato :). E soprattutto, Id come qualcosa in cui posso grep per un byte come personaggio - hexdump mi costringe a stringhe per byte) Edit3 cercare: Grazie per la risposta da parte tchrist, qui è anche un esempio con grep e la congruenza e la visualizzazione dei risultati (anche se non proprio la stessa domanda come OP): Per avere i dati abbinati essere raggruppati come un byte (due caratteri esadecimali) ciascuna, poi H2 H2 H2. ha bisogno di essere specificato per il maggior numero di byte ci sono nella stringa corrispondente come la mia partita. 000xCC000. copre 17 byte, posso scrivere H2x17 in Perl. Ognuno di questi H2 tornerà una variabile separata (come in una lista), quindi unire deve anche essere usato per aggiungere spazi tra di loro - eventualmente: Well. infatti Perl è molto bella struttura grep binario, devo ammettere :) Fino a quando si apprende la sintassi corretta :) chiesto 14 novembre 10 a 22:31 Come sarebbe uno uno applicare questo per stringhe binarie arbitrarie Ho cercato il tuo perl - ln0777e pos 39print () mentre 47illegal47g39 47usr47bin47awk approccio per trovare contenuti perso in un file di dispositivo grezzo su disco, ma perl barfed a me con quotOut di memoryquot a metà strada. ndash fuzzyTew 9 dicembre 16 alle 14:12 Un modo per risolvere il problema immediato utilizzando solo grep è quello di creare un file contenente un singolo byte nullo. Dopo di che, grep - abo - f nullbytefile targetfile produrrà il seguente output. Questo è, naturalmente, ogni compensati come richiesto dal - b seguito da un byte null come richiesto dal - o Id byte essere il primo a sostenere perl, ma in questo caso non c'è bisogno di portare nel family. Linux e Unix comando grep grep esteso . che sta per Global Print espressione regolare, elabora testo riga per riga e stampa le linee che corrispondono a un modello specifico. grep sintassi Grep è un potente strumento per la corrispondenza di una espressione regolare contro il testo in un file, più file o un flusso di ingresso. Si cerca il modello di testo specificato nella riga di comando, e restituisce i risultati per voi. Esempio di utilizzo Diciamo vuole individuare rapidamente la frase nostri prodotti in file HTML sul computer. Consente di iniziare con la ricerca di un singolo file. Qui, il nostro modello di è i nostri prodotti e il nostro file è un prodotto-listing. html. Una singola riga è stato trovato contenente il nostro modello, e grep emette l'intera linea corrispondente al terminale. La linea è più lunga la nostra larghezza del terminale in modo che il testo si avvolge attorno alle seguenti linee, ma questa uscita corrisponde esattamente ad una linea nel nostro file. Nota: il modello viene interpretato da grep come un'espressione regolare. Nell'esempio di cui sopra, tutti i personaggi che abbiamo usato (lettere e uno spazio) sono interpretati letteralmente nelle espressioni regolari, in modo che solo la frase esatta sarà abbinato. Altri personaggi hanno un significato particolare, ma mdash alcuni segni di punteggiatura, per esempio. Per ulteriori informazioni, vedere il nostro Regular Expression riferimento rapido. Sta guardando uscita grep di colore Se usiamo l'opzione --color, le nostre partite di successo saranno evidenziati per noi: la visualizzazione di numeri di riga delle partite di successo Sarà ancora più utile se sappiamo dove appare la linea corrispondente nel nostro file. Se specifichiamo l'opzione - n, grep sarà prefisso ogni riga di corrispondenza con il numero di riga: La nostra linea di corrispondenza è preceduto da 18: che ci dice questo corrisponde alla linea 18 nel nostro file. Esecuzione di grep case-insensitive cerca E se i nostri prodotti appare all'inizio di una frase, o appare in maiuscolo Possiamo specificare l'opzione - i per eseguire un case-insensitive partita: Utilizzando l'opzione - i, grep trova una corrispondenza on line 23 pure. La ricerca in più file utilizzando un carattere jolly Se abbiamo più file per la ricerca, siamo in grado di cercare tutti utilizzando un carattere jolly nel nostro nome FILE. Invece di specificare prodotto listing. html. siamo in grado di utilizzare un asterisco () e l'estensione. html. Quando viene eseguito il comando, la shell si espanderà l'asterisco al nome di qualsiasi file che trova (nella directory corrente) che termina in. html. Si noti che ogni riga inizia con il file specifico in cui si verifica quella partita. Ricorsivamente ricerca sottodirectory Possiamo estendere la nostra ricerca per le sottodirectory e tutti i file in esse contenuti con l'opzione - r, che dice a grep per effettuare la sua ricerca in modo ricorsivo. Consente di cambiare il nostro nome del file per appena un asterisco (), in modo che possa adattarsi a qualsiasi nome di file o directory, e non solo i file HTML: Questo ci dà tre partite supplementari. Si noti che il nome della directory è incluso per tutti i file corrispondenti che non sono nella directory corrente. Uso delle espressioni regolari per eseguire ricerche più potenti Il vero potere di grep è che può essere utilizzato per abbinare le espressioni regolari. (Questo è quello che il re in grep sta per). Le espressioni regolari usano caratteri speciali nella stringa di modello per abbinare una più ampia gamma di stringhe. Vediamo un semplice esempio. Diciamo che si desidera trovare ogni occorrenza di una frase simile ai nostri prodotti nei file HTML, ma la frase dovrebbe sempre iniziare con la nostra e terminare con prodotti. Siamo in grado di specificare questo motivo invece: our. products. Nelle espressioni regolari, il punto (.) Viene interpretato come un carattere jolly singolo carattere. Questo significa qualsiasi carattere che appare in questo luogo corrisponderà. L'asterisco () indica il carattere precedente, che appare zero o più volte, corrisponderà. Quindi la combinazione. corrisponderà un numero qualsiasi di qualsiasi carattere. Per esempio, i nostri prodotti stupefacenti, il nostro, i migliori prodotti sempre, e anche ourproducts corrisponderanno. E poiché sono stati specificando l'opzione - i, i nostri prodotti e Ourproducts abbinerà pure. Consente di eseguire il comando con questa espressione regolare, e vedere che cosa le partite supplementari che possiamo ottenere: Qui, abbiamo anche ottenuto una partita dalla frase nostri prodotti pregiati. Grep è un potente strumento che può aiutare a lavorare con i file di testo, e diventa ancora più potente quando si diventa agio con le espressioni regolari. Descrizione Tecnica grep cerca (o standard input se nessun file sono nominati, o se un singolo trattino (-) è dato come nome del file) il file di input di nome s per le linee che contengono una corrispondenza al dato modello. Per impostazione predefinita, grep stampa le linee corrispondenti. Inoltre, tre programmi variante egrep. fgrep e rgrep sono disponibili: egrep è la stessa cosa che lanciare grep - E. In questa modalità, grep valuta la stringa MODELLO come espressione regolare estesa (ERE). Oggigiorno, ERE non si estende molto oltre espressioni regolari base, ma possono ancora essere molto utile. Per ulteriori informazioni sulle espressioni regolari estesi, vedere di base contro le espressioni regolari estese. sotto. fgrep è la stessa cosa che lanciare grep - F. In questa modalità, grep valuta la vostra stringa di modello come un mdash stringa fissa ogni carattere nella stringa viene trattata letteralmente. Ad esempio, se la stringa contiene un asterisco (), grep cercherà di corrispondere con un asterisco reale, piuttosto che interpretare questo come un jolly. Se la stringa contiene più righe (se contiene ritorni a capo), ogni riga sarà considerata una stringa fissa, e nessuno di essi può innescare una corrispondenza. rgrep è la stessa cosa che lanciare grep - r. In questa modalità, grep effettuerà la sua ricerca in modo ricorsivo. Se incontra una directory, si attraverserà in quella directory e continuare la ricerca. (I link simbolici sono ignorate se si vuole directory che sono simbolicamente legati cercare, si consiglia di utilizzare l'opzione - R, invece). Nei sistemi operativi precedenti, egrep. fgrep e rgrep erano programmi distinti con i loro propri exectuables. Nei sistemi moderni, questi i nomi dei comandi speciali sono semplicemente scorciatoie a grep con le bandiere appropriati abilitati. Essi sono funzionalmente equivalenti. Opzioni legale Stampa un messaggio di aiuto brevemente riassumere le opzioni della riga di comando, e uscire. Se possibile, utilizzare la chiamata di sistema mmap per leggere l'input, invece della chiamata di sistema di lettura di default. In alcune situazioni, --mmap rese migliori prestazioni. Tuttavia, --mmap può causare un comportamento non definito (compresi i core dump) se un file di input si restringe mentre grep è in funzione, oppure se si verifica un errore IO. Trattare il file (s) in formato binario. Per impostazione predefinita, in MS-DOS e MS Windows, grep indovina il tipo di file, cercando il contenuto del primo 32KB letti dal file. Se grep decide il file è un file di testo, si spoglia i caratteri CR da il contenuto del file originale (per rendere le espressioni regolari con e funzionano correttamente). Specificando - U overrules questo congetture, causando tutti i file da leggere e passati al meccanismo di corrispondenza pari pari se il file è un file di testo con coppie CRLF alla fine di ogni riga, questo farà sì che alcune espressioni regolari per sicuro. Questa opzione non ha effetto su piattaforme diverse da MS-DOS e MS Windows. Trattare l'ingresso come un insieme di righe, ciascuna terminato da un byte zero (carattere ASCII NUL) invece di una nuova riga. Come l'-Z o l'opzione --null, questa opzione può essere utilizzata con comandi come sorta - z per elaborare i nomi di file arbitrari. Espressioni regolari Un'espressione regolare è un modello che descrive un insieme di stringhe. Le espressioni regolari sono costruite in modo analogo alle espressioni aritmetiche, usando diversi operatori per combinare espressioni più piccoli. grep capisce tre diverse versioni di sintassi delle espressioni regolari: quotbasicquot (BRE), quotextendedquot (ERE) e quotperlquot (PRCE). In GNU grep. non vi è alcuna differenza nella disposizione funzionalità tra sintassi di base ed estese. In altre implementazioni, le espressioni regolari base sono meno potenti. La seguente descrizione vale per lunghi differenze espressioni regolari per le espressioni regolari di base sono riassunti in seguito. Perl espressioni regolari forniscono funzionalità aggiuntive. I mattoni fondamentali sono le espressioni regolari che corrispondono a un singolo carattere. La maggior parte dei personaggi, tra cui tutte le lettere e le cifre, sono espressioni regolari che si corrispondono. Qualsiasi meta-personaggio con significato speciale può essere citato facendolo precedere da una barra inversa. Il punto (.) Corrisponde a qualsiasi singolo carattere. Classi di caratteri e la staffa Espressioni Un'espressione staffa è un elenco di caratteri racchiusi da e. Esso corrisponde a qualsiasi singolo carattere in quella lista, se il primo carattere della lista è il cursore allora corrisponde a qualsiasi carattere non è nella lista. Ad esempio, l'espressione regolare 0123456789 corrisponde a qualsiasi cifra singola. All'interno di un'espressione staffa, un'espressione gamma si compone di due caratteri separati da un trattino. Esso corrisponde a qualsiasi singolo carattere che ordina tra i due personaggi, compreso, utilizzando i locali fascicolazione sequenza e set di caratteri. Per esempio, nelle impostazioni di default C, A-D è equivalente a abcd. Molti locali ordinare caratteri in ordine dizionario, e in questi locali un-D è in genere non equivale a abcd potrebbe essere equivalente a aBbCcDd. per esempio. Per ottenere l'interpretazione tradizionale di espressioni fra parentesi quadre, è possibile utilizzare la versione locale C impostando la variabile d'ambiente LCALL al valore C. Infine, alcune classi denominate di caratteri sono predefiniti all'interno di espressioni fra parentesi quadre, come segue. I loro nomi sono auto esplicativo, e sono: alnum:. : Alpha:. : CNTRL:. : Cifre:. : Grafico:. :inferiore: . : Stampa:. : Punct:. :spazio: . : Superiore:. e: xdigit:. Ad esempio,: alnum: indica la classe di caratteri di numeri e lettere nella localizzazione corrente. Nella codifica locale e carattere ASCII set C, questo è lo stesso come 0-9A-Za-z. (Si noti che le parentesi di questi nomi delle classi sono parte dei nomi simbolici, e devono essere inclusi in aggiunta alle staffe che delimitano l'espressione staffa.) La maggior parte dei meta-personaggi perdono il loro significato speciale all'interno di espressioni fra parentesi quadre. Per includere un luogo letterale è il primo della lista. Allo stesso modo, per includere un luogo letterale ovunque ma in primo luogo. Infine, per includere un letterale -. posizionarlo durare. Il punto di inserimento e del dollaro sono meta-caratteri che corrispondono, rispettivamente, la stringa vuota all'inizio e alla fine di una riga. Il carattere backslash e speciale Espressioni I simboli lt e GT corrispondono, rispettivamente, alla stringa vuota all'inizio e alla fine di una parola. Il simbolo B corrisponde alla stringa vuota sul bordo di una parola, e B corrisponde alla stringa vuota ha fornito la sua non è a bordo di una parola. Il simbolo w è sinonimo di: alnum: e W è sinonimo di: alnum:. La ripetizione Un'espressione regolare può essere seguita da uno dei diversi operatori di ripetizione: Se si conosce l'estensione o il modello del file che si desidera, un altro metodo è quello di utilizzare l'opzione --include: Si può anche citare i file da escludere con --exclude. Se si cerca di frequente con il codice, Ag (The Silver Searcher) è un molto più veloce alternativa al grep, thats personalizzati per la ricerca di codice. Per esempio, la sua ricorsiva per impostazione predefinita e automaticamente ignora i file e le directory elencate nella. gitignore. in modo da non dover mantenere l'approvazione della stessa ingombrante Opzione exclude a grep o trovare. risposto 30 dicembre 11 alle 22:59 Penso che dovrebbe essere un. alla fine, non un ndash Raphael 21 Giugno 12 a 22:59 funziona alla grande con grep che viene fornito con Linux amplificatore Cygwin, ma non con quello che viene fornito con AIX. ndash Trattenuti 31 gennaio 13 alle 20:08 Dovrebbe essere --includequot. txtquot ndash Krzysztof Wolny 18 dicembre 13 a 13:28 KrzysztofWolny: invece di funziona bene su Ubuntu. PS: that39s dovrebbero essere uno spazio backticked, ma il parser SO Markdown fallito. ndash Dan Dascalescu 19 febbraio 14 a 9:08 In opzione exec - simbolo è un riferimento al nome del file che attualmente trovata da strumento di ricerca (che è quello di fare qualcosa con il nome del file che abbiamo trovato), anche l'opzione exec deve essere chiuso con il simbolo (per marcare fine dei comandi exec), ma perché questo è tutto in esecuzione in un guscio di quel simbolo deve essere sfuggito. e, infine, l'opzione - print lascia trovare strumento per stampare i nomi dei file presenti sullo schermo. ndash torre 27 aprile 16 alle 9.47 AG è il mio modo preferito per farlo ora githubggreerthesilversearcher. La sua fondamentalmente la stessa cosa come ACK, ma con un paio di ottimizzazioni. risposto 21 Maggio 14 at 23:37 solo i file possono essere utili anche risposto 3 dicembre 12 a 17:48 Questo dovrebbe funzionare: una risposta 19 dicembre 13 alle 7:20 Per trovare il nome del file con percorso ricorsivamente contenente l'uso particolare stringa di sotto comando per UNIX: trovare un file sul server UNIX trovare un file sul server Linux risposto 29 Gennaio 16 anni al 14:31 Se si desidera solo seguire le directory reali, e collegamenti non simbolici, Se si vuole seguire i link simbolici, nonché elenchi effettivi ( fate attenzione di ricorsione infinita), Dal momento che youre cercando di grep ricorsivo, le seguenti opzioni possono anche essere utile a voi: Quindi, se si desidera trovare tutti i file che contengono Darth Vader nella directory corrente o di qualsiasi sottodirectory e catturare il numero di file e la linea, ma non vogliono la ricorsione di seguire i link simbolici, il comando sarebbe se si desidera trovare tutti i riferimenti della parola gatto nella directory e sei attualmente nella directory e si desidera catturare il nome del file, ma non il numero di riga di qualsiasi istanza dei gatti di stringa, e si desidera che la ricorsione di seguire i link simbolici se li trova, è possibile eseguire una delle seguenti operazioni grep esecuzione --help Una breve introduzione ai link simbolici, per chiunque legga questa risposta e confuso dal mio riferimento ad esse : nixtutorfreebsdunderstanding-simbolico-link Se siete alla ricerca di un contenuto specifico in tutti i file da una struttura di directory, è possibile utilizzare trovare dal momento che è più chiaro cosa si sta facendo: si noti che - l (downcase di L) indica il nome del file che contiene il testo. Rimuoverlo se invece desidera stampare la partita stessa. Oppure utilizzare - H per ottenere il file insieme con la partita. Tutti insieme, altre alternative sono: Dove - n stampa il numero di riga. risposto 30 novembre 15 a 16:19 Up-votato per essere l'unica soluzione ritrovamento sia per evitare l'uso non necessario di xargs ed usare invece che con - exec. evitando in tal modo di tonnellate di lanci di processo inutili. -) Ndash ShadowRanger 30 Gennaio 16 anni al 08:08 Nel mio (versione IBM AIX Server OS: AIX 5.2), l'uso: questo stampa nome PathFile e numero di riga relativa nel file come: 2865: Descrizione. stringYouWannaFind comunque, funziona per me. ) Beh, no - xargs è specificatamente per la conversione di un tubo di argomenti per un arglist, ma sì, è vero che xargs moderni quando viene utilizzato con - s Andor - L può trattare con molto lunghi arglists rompendo in più invocazioni di comandi, ma isn39t configurato in questo modo di default (e wasn39t in una qualsiasi delle risposte di cui sopra). A titolo di esempio: trovare. - type f xargs - L 100 grep qualunque ndash m. thome 23 aprile 15 al 13:56 Quale piattaforma sarebbe che essere su POSIX xargs è standardizzato per avere questo comportamento fuori dalla scatola. utility quotThe xargs deve limitare la lunghezza della riga di comando in modo che quando la linea di comando viene richiamato, l'argomento combinato e ambiente liste. non deve superare -2048 bytes. quot tripleee ndash 23 aprile 15 al 15:42 ricorsiva grep

No comments:

Post a Comment