Voglio prendere gli ultimi due numeri (uno int, uno mobile, seguito da spazi bianchi facoltativi) e stamparli solo.sed: stampa solo gruppo corrispondente
Esempio:
foo bar <foo> bla 1 2 3.4
deve stampare:
2 3.4
Finora, ho il seguente:
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/replacement/p'
mi darà
foo bar <foo> bla 1 replacement
Tuttavia, se provo a sostituirlo con il gruppo 1, viene stampata l'intera riga.
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/\1/p'
Come posso stampare solo la sezione della linea che corrisponde alla regex nel gruppo?
Ho dovuto aggiungere l'opzione '-r' o' --regexp-extended', altrimenti ricevevo l'errore 'reference reference \ 1 on 's' RHS ' error '. –
@DanielSokolowski Penso che tu riceva questo errore se usi '(' e ')' invece di '\ (' e '\)'. –
Ricorda inoltre di aggiungere '.* 'alla fine della regexp se la stringa che vuoi estrarre non è sempre alla fine della riga. –