Chcę pobrać dwie ostatnie liczby (jedną int, jedną zmienną, a następnie opcjonalną białą) i wydrukować tylko te.sed: drukuj tylko pasującą grupę
Przykład:
foo bar <foo> bla 1 2 3.4
powinien wydrukować:
2 3.4
tej pory mam następujące:
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/replacement/p'
da mi
foo bar <foo> bla 1 replacement
Jeśli jednak spróbuję zastąpić go grupą 1, drukowana jest cała linia.
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/\1/p'
Jak mogę wydrukować tylko część linii, która pasuje do wyrażenia regularnego w grupie?
Musiałem dodać opcję '-r' lub' --regexp-extended' w przeciwnym razie otrzymywałem 'nieprawidłowe odwołanie \ 1 na komendzie' s 'polecenia RHS 'error. –
@DanielSokolowski Myślę, że otrzymujesz ten błąd, jeśli używasz '(' i ')' zamiast '\ (' i '\)'. –
Pamiętaj też, aby dodać '.* 'na końcu wyrażeń regularnych, jeśli ciąg, który chcesz wyodrębnić, nie zawsze znajduje się na końcu wiersza. –