Subtrair um número da variável que contém uma frase

0

Esta é uma questão extensiva de

link

Eu sou novo em shell. Eu escrevi um script de shell um código com encontra uma frase que eu quero subtrair o valor dessa frase. a sentença é como abaixo

FINAL SINGLE POINT ENERGY       -39.022584378179

Eu quero a parte numérica, expr substr me dá erro de comando desconhecido e, na verdade, o tamanho da minha parte numérica pode variar, então eu queria usar o awk algo como:

awk -F" " '{ print $1 }' $line

vocês podem me ajudar

aqui está meu código

optimized=0
while IFS= read -r line; do
  case $line in
    *"HURRAY"*)
      optimized=1
      continue
      ;;
    "FINAL SINGLE POINT ENERGY      "*)
      [ "$optimized" = 1 ] || continue
      final_energy='echo $line | awk '{print $NF }''
      echo "Found optimized final energy: $final_energy"
      ;;
    "final energy")
  esac
done < input-s.out

o arquivo de log é um arquivo longo contém muitos FINAL SINGLE POINT ENERGY "e tem que ler apenas o último que vem depois de hurray .

    
por Raymond Ghaffarian Shirazi 19.08.2015 / 16:08

1 resposta

1
$ awk '/HURRAY/ { ok = 1 } ok == 1 && /^FINAL SINGLE POINT ENERGY/ { printf("Found optimized final energy: %s\n", $NF) }' input-s.out

Acho que isso faz o que seu script de shell está tentando fazer.

Se encontrar a string HURRAY em algum lugar, define ok para 1 (sua variável optimized ). Se ok for 1 e encontrar uma linha começando com a string FINAL SINGLE POINT ENERGY , ela exibirá a mensagem seguida do valor na última coluna da mesma linha.

    
por 16.02.2017 / 00:54