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 perlrePerl正規表現の詳細については、参考資料を参照してください。

答え2

数字の周りのすべての点を削除したいと仮定すると、次のようになります。

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

答え3

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

これは「.rpm」と行の終わりに続く一連の(ドットと数字)です。

関連情報