Realizando aritmética em uma parte extraída de uma coluna

1

Eu tenho um arquivo de texto com os campos da seguinte forma

 1; 3435; 45--XY 
 2; 3436; 15--XY 
 3; 3437; 23--XY

Eu sou obrigado a multiplicar a primeira coluna com a parte numérica da última coluna e, em seguida, exibi-los em um arquivo de saída. Como devo fazer isso? Eu acho que o awk seria o comando mais direto.

Tentei: awk -F';' '{print substr($3,1,2)* $1}' input.txt > output.txt

    
por thefinn 28.10.2017 / 10:25

2 respostas

2

O simples

awk '{print $1 * $3}' input.txt
O comando

fará o trabalho. Extrair os números do campo não é necessário neste caso.

É causado o mecanismo de conversão numérica de awk - Como o awk se converte entre strings e números , a saber:

A string is converted to a number by interpreting any numeric prefix of the string as numerals: "2.5" converts to 2.5, "1e3" converts to 1,000, and "25fix" has a numeric value of 25. Strings that can’t be interpreted as valid numbers convert to zero.

Resultado

45
30
69
    
por 28.10.2017 / 12:45
1
Solução

awk :

awk -F';' '{ gsub(/[^0-9]+/,"",$NF); print $1*$NF }' input.txt > output.txt
  • gsub(/[^0-9]+/,"",$NF) - remove todos os caracteres não dígitos [^0-9]+ do último campo $NF

O output.txt content:

45
30
69
    
por 28.10.2017 / 10:50