sed 或 awk:删除以数字开头并以 rpm 结尾的字符串

sed 或 awk:删除以数字开头并以 rpm 结尾的字符串

我知道一个正则表达式可以从字符串中删除所有数字

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 代码后打印结果
  • -ePerl代码
  • s/[\d\.]\.rpm$//替换包含数字、点的任意组合但以.rpm空白字符串结尾的字符。perldoc perlre有关 perl 正则表达式的更多信息,请参见 参考资料。

答案2

假设您还想去掉数字周围的所有点,这是我的尝试:

sed 's/[[:digit:].]*\.rpm$//'

答案3

s/(\.[0-9]+)*\.rpm$//

这是一组(点和数字)任意数量的时间,后跟“.rpm”和行尾。

相关内容