torr ou awk: remove a string que começa com number e termina com rpm

1

Eu sei um regex para remover da string todos os números

sed 's/-[0-9].*//'

Eu quero remover todas as strings que começam com números e terminam com rpm Por exemplo com essas cordas

software.v2.strings.strings.3.30.rpm
software.64.7.7.0.strings.4.30.rpm
soft.1-4-4.string.44.rpm

deve remover apenas os últimos números que terminam com rpm

Então, voltaremos

software.v2.strings.strings 
software.64.7.7.0.strings 
soft.1-4-4.string 

Alguém sabe como fazer?

    
por elbarna 20.12.2016 / 18:16

3 respostas

1

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

Esse é um grupo de quantidades arbitrárias de pontos e números, seguido por ".rpm" e fim da linha.

    
por 20.12.2016 / 18:25
3

Que tal este perl um forro?

perl -pe 's/[\d.]+\.rpm$//'

Como funciona:

  • -p Imprimir resultados depois de executar o código perl em cada linha no arquivo de entrada
  • -e código Perl
  • s/[\d\.]\.rpm$// Substitua os caracteres que contenham qualquer combinação de dígitos, pontos, mas termine com .rpm com uma string em branco. Veja perldoc perlre para saber mais sobre expressões regulares perl.
por 20.12.2016 / 18:36
2

Supondo que você também queira se livrar de todos os pontos em volta dos números, aqui está minha tentativa:

sed 's/[[:digit:].]*\.rpm$//'
    
por 20.12.2016 / 19:12

Tags