usando o script bash para extrair um número

0

Eu tenho um arquivo de texto contendo informações que eu quero extrair:

PATTERN 1
bla bla bla.. XYSS$40$$$3 bla bla...    
bla bla bla..
bla bla bla.. GNDC$3$$$23 bla bla bla..

Eu quero extrair XYSS$40$$$3 e multiplicar 40 x 3 e exibir o resultado junto com o número da linha na tela.

O mesmo que para GNDC$3$$$23 .

PATTERN2
bla bla bla.. KKKK$4$60 bla bla bla..
bla bla bla..
bla bla bla.. PPPP$10$3 bla bla bla..

Eu quero extrair KKKK$4$60 e multiplicar 4 x 60 e exibir o resultado junto com o número da linha na tela.

    
por user143252 12.12.2017 / 20:22

2 respostas

1

Se você está no Linux, provavelmente tem Perl, então

$ cat input1 
PATTERN 1
bla bla bla.. XYSS$40$$$3 bla bla...    
bla bla bla..
bla bla bla.. GNDC$3$$$23 bla bla bla..

$ perl -ne 'while (/[A-Z]{4}\$+(\d+)\$+(\d+)/g) { 
    printf "line %3d: $1 * $2 = %d\n", $., $1*$2; }' < input1
line   2: 40 * 3 = 120
line   4: 3 * 23 = 69

O padrão regex corresponde a quatro letras maiúsculas ( [A-Z]{4} ), depois alguns cifrões ( \$+ ), seguidos por dígitos ( (\d+) ) e dólares e dígitos novamente. Os parênteses capturam os números para $1 e $2 , e $. contém o número da linha atual. Altere o printf a gosto.

    
por 12.12.2017 / 20:39
1

Usando gawk :

gawk 'match($0, /[A-Z]{4}\$+([0-9]+)\$+([0-9]+)/, nums) { 
   print "Line number: "NR", result: "nums[1]*nums[2] 
}' file
    
por 12.12.2017 / 20:47