我想抓住最後兩個數字(一個int,一個float;後面是可選的空格)並僅打印它們。sed:只打印匹配組
例子:
foo bar <foo> bla 1 2 3.4
應打印:
2 3.4
到目前爲止,我有以下幾點:
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/replacement/p'
會給我
foo bar <foo> bla 1 replacement
但是,如果我嘗試將其替換爲組1,則會打印整行。
sed -n 's/\([0-9][0-9]*[\ \t][0-9.]*[\ \t]*$\)/\1/p'
我如何可以打印正則表達式的小組賽線路只有部分?
我不得不添加'-r'或'--regexp-extended'選項,否則我在's'命令的RHS '錯誤處得到'invalid reference \ 1'。 –
@DanielSokolowski我認爲如果你使用'('和')'而不是'\('和'\)',你會得到這個錯誤。 –
還記得添加'。*'到正則表達式的末尾,如果要提取的字符串不總是在行的末尾。 –