我知道一个正则表达式可以从字符串中删除所有数字
sed 's/-[0-9].*//'
我想删除所有以数字开头并以 rpm 结尾的字符串 例如这些字符串
software.v2.strings.strings.3.30.rpm
software.64.7.7.0.strings.4.30.rpm
soft.1-4-4.string.44.rpm
必须仅删除最后以 rpm 结尾的数字
所以会回来
software.v2.strings.strings
software.64.7.7.0.strings
soft.1-4-4.string
有人知道怎么办吗?
答案1
这个 Perl One 衬垫怎么样?
perl -pe 's/[\d.]+\.rpm$//'
它是如何工作的:
-p
在输入文件中的每一行执行 perl 代码后打印结果-e
Perl代码s/[\d\.]\.rpm$//
替换包含数字、点的任意组合但以.rpm
空白字符串结尾的字符。perldoc perlre
有关 perl 正则表达式的更多信息,请参见 参考资料。
答案2
假设您还想去掉数字周围的所有点,这是我的尝试:
sed 's/[[:digit:].]*\.rpm$//'
答案3
s/(\.[0-9]+)*\.rpm$//
这是一组(点和数字)任意数量的时间,后跟“.rpm”和行尾。