shell从字符串中提取子串(正则表达式)


通过试验,可以通过grep、sed两种方式实现。

假设需要提取libgcc-4.8.5-4.h5.x86_64.rpm中的版本号。

grep

echo "libgcc-4.8.5-4.h5.x86_64.rpm" | grep -Eo "[0-9]+\.[0-9]+.*x86_64"

grep的-o选项,可以只打印匹配的部分,否则会打印整行。

sed

echo "libgcc-4.8.5-4.h5.x86_64.rpm" | sed -r "s/libgcc-([0-9]+\.[0-9]+.*)\.rpm/\1/g"

sed使用\1反向引用前面匹配的组。

但是sed没有只显示匹配部分的功能,会显示整行,所以采用的思路是将整行替换为子串,比较麻烦。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM