Come dare un motivo per la nuova riga in grep? Nuova riga all'inizio, nuova riga alla fine. Non il modo di espressione regolare. Qualcosa come \ n.Come dare un motivo per la nuova riga in grep?
risposta
grep
motivi sono abbinati alle singole righe, quindi non c'è modo per un modello di corrispondere a una nuova linea trovata nell'input.
Tuttavia è possibile trovare righe vuote come questo:
grep '^$' file
grep '^[[:space:]]*$' file # include white spaces
Almeno GNU grep ha l'opzione -z che rende le linee di interruzione di grep per carattere nullo. Tuttavia, non sembra supportare newline o \ n in pattern per farli corrispondere a newline, si veda [bug report] (https://bugs.launchpad.net/ubuntu/+source/grep/+bug/1641092). – jarno
@jarno Supporta \ n nei modelli con la bandiera -P – rubystallion
È possibile utilizzare in questo modo ...
grep -P '^\s$' file
-P
viene utilizzato per espressioni regolari Perl (un'estensione POSIXgrep
).\s
corrisponde ai caratteri dello spazio bianco; se seguito da*
, corrisponde anche a una riga vuota.^
corrisponde all'inizio della riga.$
corrisponde alla fine della riga.
'-P' è un'estensione GNU.Sto bene per usarlo quando la situazione lo richiede (in genere lookahead/lookbehind), ma POSIX grep può farlo solo con '[[: space:]]'. – jordanm
FWIW, le pagine di grep di Solaris e BSD (non controllate gli altri) hanno entrambi un paragrafo per '-P'. GNU è abbastanza standard comunque. :) –
+1 per regex :) – mattexx
provare pcregrep
invece di regolare grep
:
pcregrep -M "pattern1.*\n.*pattern2" filename
l'opzione -M
permette di abbinare su più righe, in modo da poter cercare nuove righe come \n
.
Esattamente stavo cercando, grazie! – yorch
Per quanto riguarda la soluzione (senza l'uso di non-portatile -P
), si può temporaneamente sostituire nuova linea con il carattere diverso e cambiare di nuovo, ad esempio:
grep -o "_foo_" <(paste -sd_ file) | tr -d '_'
dove è alla ricerca di corrispondenza esatta _foo_
dove _
mezzi \n
(quindi __
= \n\n
). Non è necessario tradurlo entro tr '_' '\n'
, poiché ogni modello dovrebbe essere stampato nella nuova riga, quindi rimuovere _
è sufficiente.
Grazie a @jarno che so l'opzione -z e ho scoperto che quando si utilizza GNU grep con l'opzione -P, corrispondenza contro \n
è possibile. :)
Esempio:
grep -zoP 'foo\n\K.*'<<<$'foo\nbar'
Stampe bar
- 1. Come impedire a grep di stampare una nuova riga finale?
- 2. NSRuleEditor: criteri per la nuova riga
- 3. PHP: C'è un motivo per inserire una nuova riga alla fine del file
- 4. Grep per inizio e fine riga?
- 5. Avvolgere l'elemento in una nuova riga/riga utilizzando la flexbox
- 6. Regex per abbinare la singola nuova linea. Regex per abbinare la doppia nuova riga
- 7. Aprire una nuova riga sotto la riga corrente in Xcode
- 8. Come avviare una nuova riga con spazio per la riga successiva in Html.fromHtml per la visualizzazione del testo in Android
- 9. Come stampare con precisione la nuova riga in Groovy?
- 10. Come disabilitare la stampa (spazio bianco/nuova riga) in XStream?
- 11. Come dare argomenti per uccidere tramite pipe
- 12. Come impedire la nuova riga in StyledText dopo Invio premuto
- 13. Come Grep per l'intera parola
- 14. Nuova riga in Sql Query
- 15. Grep per stringhe letterali
- 16. Come sostituire un personaggio con una nuova riga in Emacs?
- 17. Grep più motivi da un file e output prime 5 corrispondenze per ciascun motivo
- 18. Ruby backslash per continuare la stringa su una nuova riga?
- 19. come inserire nuova riga dopo un carattere specifico in script
- 20. Come aggiungere un carattere di nuova riga in node.js?
- 21. Aggiungere riga vuota dopo ogni risultato in grep
- 22. Perdita di una nuova riga dopo l'assegnazione del risultato di grep a una variabile di shell
- 23. jqGrid evidenzia la nuova riga aggiunta
- 24. PHP SimpleXML nuova riga
- 25. Perché appendAttributoStringa mostra la stringa accodata in una nuova riga?
- 26. Nuova riga nell'attributo titolo?
- 27. XML - aggiunta nuova riga
- 28. Uso di grep per ottenere la WORD successiva dopo una corrispondenza in ogni riga
- 29. Conserva la colorazione dopo la connessione di grep a grep
- 30. Nome file grep e numero di riga
non è chiaro ciò che si desidera. 'new line all'inizio 'è una riga vuota e' new line at end' si applica a ogni riga del file. Puoi pubblicare un esempio? –
In realtà puoi usare '$'. È un po 'limitato, ma utilizzabile in casi semplici. –
https://www.gnu.org/software/grep/manual/grep.html#Usage vedere l'articolo 15. – jarno