文を含む変数から数字を減算する

文を含む変数から数字を減算する

これはの拡張質問です。

https://stackoverflow.com/questions/32081168/reading-a-log-file-with- Different-sequences-using-shell-script

私はシェルを初めて使用します。文を見つけるためのコードを含むシェルスクリプトを書いたので、その文から値を減算したいと思います。文は次のとおりです

FINAL SINGLE POINT ENERGY       -39.022584378179

数字の部分が欲しい。 expr substrは不明なコマンドエラーを提供します。実際には、数値部分の長さは異なる場合があるので、awkを使用したいと思います。たとえば、次のようになります。

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

助けてください

これは私のコードです

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

ログファイルはFINAL SINGLE POINT ENERGY多くの「」を含む長いファイルで、その後の最後のファイルのみを読み取る必要がありますhurray

ベストアンサー1

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

私はこれがシェルスクリプトがやろうとしていると思います。

どこかで文字列が見つかると、1(変数)にHURRAY設定されます。 1で文字列で始まる行が見つかると、メッセージが表示され、その後に同じ行の最後の列の値が表示されます。okoptimizedokFINAL SINGLE POINT ENERGY

おすすめ記事