如何解决sed:只打印匹配组
匹配整行,所以.*
在你的正则表达式的开头添加一个。这会导致整行替换为组的内容
echo "foo bar <foo> bla 1 2 3.4" |
sed -n 's/.*\([0-9][0-9]*[\ \t][0-9.]*[ \t]*$\)/\1/p'
2 3.4
解决方法
我想获取最后两个数字(一个 int,一个 float;后跟可选空格)并只打印它们。
例子:
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'
如何仅打印与组中正则表达式匹配的行部分?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。