他の文字列のインデックスに基づいて部分文字列を取得する方法

他の文字列のインデックスに基づいて部分文字列を取得する方法

一部のログファイルから整数値を抽出する必要があります。整数値は常に部分文字列の後に表示されます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

#左右の%パターンを削除してください。

おすすめ記事