我想找到一种直接的方法来提取字符串的一部分,直到第一位数字出现为止(可能使用正则表达式,而不是逐个字符地遍历字符串)。我正在使用它来提取rpm -qa
没有版本的软件包名称。例如:
Parsing: perl-Text-ParseWords-3.30-1.fc22.i686
Result: perl-Text-ParseWords
我们可以简单地修改rpm查询以仅输出名称。
rpm -qa --queryformat "%{NAME}\n"
否则我们可能会因为正则表达式而变得肮脏
不完全是“直截了当”,但这是一个应该能够做到的sed正则表达式。
sed -e 's/\([^\.]*\).*/\1/;s/-[0-9]*$//' <<< "perl-Text-ParseWords-3.30-1.fc22.i686"
这应该处理所有事情,除了包名称中有一个句点(我什至不认为这是允许的)。
快速击穿
s/\([^\.]*\).*/\1/
抢在第一期之前的所有东西。所以perl-Text-ParseWords-3.30-1.fc22.i686
变成perl-Text-ParseWords-3
s/-[0-9]*$//
删除尾随的-
第一个版本数字。如此perl-Text-ParseWords-3
成为perl-Text-ParseWords
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句