一部のログファイルから整数値を抽出する必要があります。整数値は常に部分文字列の後に表示されますreturn code
。ただし、この部分文字列の後には他に何かがあるかもしれません。以下は 2 つの例です。
Job with id 0 ended with status COMPLETED, return code 16, in 1 minute 12 seconds
Job with id 0 COMPLETED with return code 255
したがって、最初のケースでは16が必要で、2番目のケースでは255が必要です。
私の最初のアプローチはawkを使用することでしたが、必要な値が表示される列が一致しなかったため失敗しました。
これをどのように信頼できる方法で達成できますか?
ベストアンサー1
パラメータ拡張の使用:
#! /bin/bash
strings=('Job with id 0 ended with status COMPLETED, return code 16, in 1 minute 12 seconds'
'Job with id 0 COMPLETED with return code 255'
)
for string in "${strings[@]}" ; do
code=${string#*return code }
code=${code%%[!0-9]*}
echo $code
done
#
左右の%
パターンを削除してください。