Questo è semplice ma non riesco a google. Posso usare l'invocazione di grep per fareCerca con grep per due espressioni contemporaneamente
grep expr1 | grep expr2
in modo che stampi le linee tra cui sia expr1 e espr2?
Questo è semplice ma non riesco a google. Posso usare l'invocazione di grep per fareCerca con grep per due espressioni contemporaneamente
grep expr1 | grep expr2
in modo che stampi le linee tra cui sia expr1 e espr2?
Prova questo:
grep 'expr1.*expr2\|expr2.*expr1'
Questo è un po 'più complicato di quanto dovrebbe essere se si sa che " expr2 "verrà sempre dopo" expr1 ". In tal caso, si potrebbe semplificare a:
grep 'expr1.*expr2'
Quello che dovrebbe funzionare.
Quello che segue è un modo alternativo per ottenere lo stesso effetto:
grep -E 'expr1.*expr2|expr2.*expr1'
So che funziona :-). Ero solo stanco di invocare Grep due volte dappertutto. Ma sembra che sia più veloce scrivere semplicemente grep due volte per digitare questo. Purtroppo, spesso non conosco l'ordine delle espressioni. Speravo in qualcosa come 'grep (expr1ANDexpr2)' :-). A proposito, è ancora più veloce in una sceneggiatura rispetto a chiamare grep due volte? – sup
È possibile fornire diverse espressioni per cercare con diverse bandiere -e, see this post.
cioè
grep -e espr1 espr2 -e
Hm, ma questa ricerca expr2 O expr2, voglio AND ... – sup
@sup: in GNU grep 2.16 la riga di comando suggerita cerca entrambe le espressioni – fred
Sto eseguendo GNU GREP 2.25 e in esecuzione ' grep --version | grep -e is -e software' non sembra cercare righe contenenti entrambe le espressioni, ma cerca linee contenenti un'espressione. – sup
In realtà il proprio suggerimento è quasi corretta se si desidera ottenere le righe che contengono entrambe le espressioni. Uso:
grep expr1 somefile | grep expr2
Oh, normalmente uso 'cat somefile | grep expr1 | grep expr2', ma penso che non sia importante quale software io uso per canalizzare la roba :-). – sup
Questo farà un "e" invece di "o" operazione, non è vero? –
Puoi anche usare 'grep
Piuttosto che avere un sacco di domande identiche - in precedenza ha funzionato per me, tranne che ho fatto: 'sudo grep -E -rnw '/ var/log /' -e 'Memoria insufficiente. * Gen 17 | Gen 17. * Memoria insufficiente ''- senza il backslash. Linux Mint 18.3, GNU bash 4.3.48 – nate