Come dettagliato here, si vuole una clausola lookbehind positiva, come ad esempio:
grep -P '(?<=name=)[ A-Za-z0-9]*' filename
Il -P rende grep usare il dialetto Perl, altrimenti si sarebbe probabilmente bisogno di fuggire le parentesi. È anche possibile, come indicato altrove, aggiungere il parametro -o
per stampare solo ciò che corrisponde. La parte tra parentesi indica che si desidera alfanumerici e spazi.
Il vantaggio dell'utilizzo di una clausola di lookbehind positiva è che il testo "name =" non fa parte della corrispondenza. Se grep evidenzia il testo, questo evidenzierà solo la parte alfanumerica (e gli spazi). Il parametro -o non mostrerà anche la parte "name =". E se lo trasferisci su un altro programma come sed che potrebbe catturare il testo e fare qualcosa con esso, non catturerai la parte "name =", anche se puoi farlo usando la cattura dei parenthess.
grep supporta effettivamente il lookbehind positivo? –
Ero preoccupato anche per questo, quindi l'ho provato sul mio PC Windows, ed è per questo che ho dovuto usare il parametro -P. Probabilmente lo supporta negli altri sapori (forse non -G), ma non sapevo la corretta fuga per gli elementi. Sto usando grep 2.5.1. – markets
Ho capito con grep -P: grep: il supporto per l'opzione -P non è compilato in questo Questo è su Ubuntu Hardy (Linux 2.6.24). Su un'altra macchina Linux ha fallito con un messaggio di errore leggermente diverso, e anche su Solaris 10. –