通過試驗,可以通過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沒有只顯示匹配部分的功能,會顯示整行,所以采用的思路是將整行替換為子串,比較麻煩。