好みの代替

好みの代替

私は最初の数字まで文字列の一部を抽出する簡単な方法を探したいと思います(おそらく文字列を文字ごとに繰り返すのではなく正規表現を使用するようです)。rpm -qaバージョンなしでパッケージ名を抽出するためにこれを使用しています。たとえば、

Parsing: perl-Text-ParseWords-3.30-1.fc22.i686
Result: perl-Text-ParseWords

答え1

好みの代替

私たちは単に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.i686perl-Text-ParseWords-3

  • s/-[0-9]*$//末尾-と最初のバージョン番号を削除します。だからperl-Text-ParseWords-3それはperl-Text-ParseWords

答え2

Bashから直接:

a='perl-Text-ParseWords-3.30-1.fc22.i686'
r='(^[^0-9]+)'
[[ $a =~ $r ]]

echo "${BASH_REMATCH[1]%?}"

関連情報