Extrai um número que é atribuído a uma string usando um script Perl

4

Eu tenho um arquivo input.txt que tem algumas strings e cada string tem alguns valores atribuídos a ele.

Minha tarefa é escrever um script Perl para extrair o número que é atribuído a qualquer uma das strings.

Por exemplo, dado este input.txt

Tom=0×1234,Bob=0x4567,rock=0x8912.

Eu tenho que extrair o valor que é atribuído a rock .

Eu preciso de ajuda para escrever um script para fazer isso.

    
por Ram Charan 17.12.2017 / 15:56

3 respostas

5

Uma variante no @terdon - para cada /rock=(...)/, diga:

perl -nE 'say for /rock=(\w+)/'

e uma solução com grep

grep -Po 'rock=\K\w+' file
    
por JJoao 20.12.2017 / 18:52
4

Aqui está uma maneira:

$ perl -lne  '/rock=([^.,]+)/ && print ' file
0x8912

O /rock=([^.]+)/ corresponderá à string rock= e, em seguida, capturará o trecho mais longo de um ou mais caracteres que não são . ( [^.]+ ). Os parênteses "capturam" a correspondência e a disponibilizam como . Se isso corresponder, será impresso.

O -l remove as novas linhas à direita de cada linha de entrada e adiciona uma nova linha a cada chamada print . O -n diz a perl para ler um arquivo de entrada linha por linha e aplicar o script dado por -e a cada linha.

    
por terdon 20.12.2017 / 17:48
-3

Algo parecido com isto

echo Tom=0×1234,Bob=0x4567,rock=0x8912 | perl -E'while(<<>>){print map$_->[1],grep$_->[0]=~/rock/,[split/=/]for split/,/,$_}';

Que compila com warnings e usa o novo <<>> , então é um código perl realmente bom.

    
por Evan Carroll 17.12.2017 / 20:07

Tags