Tôi muốn lấy hai số cuối cùng (một int, một phao; tiếp theo là khoảng trắng tùy chọn) và chỉ in chúng.sed: chỉ in nhóm phù hợp
Ví dụ:
foo bar <foo> bla 1 2 3.4
nên in:
2 3.4
Cho đến nay, tôi đã điều sau đây:
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/replacement/p'
sẽ cho tôi
foo bar <foo> bla 1 replacement
Tuy nhiên, nếu tôi cố gắng thay thế bằng nhóm 1, toàn bộ dòng được in.
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/\1/p'
Tôi chỉ có thể in phần của dòng khớp với regex trong nhóm?
Tôi phải thêm tùy chọn '-r' hoặc' --regexp-extended' nếu không tôi đã nhận được 'tham chiếu không hợp lệ \ 1 trên' s 'command's RHS 'error. –
@DanielSokolowski Tôi nghĩ bạn nhận được lỗi đó nếu bạn sử dụng '(' và ')' thay vì '\ (' và '\)'. –
Cũng nhớ thêm '.* 'đến cuối regexp nếu chuỗi bạn muốn trích xuất không phải lúc nào cũng ở cuối dòng. –