文字列から文字を削除するときにbashエラーを修正する方法は?

文字列から文字を削除するときにbashエラーを修正する方法は?

これは宿題ではありません。私はbashに初めてアクセスし、ロギングからいくつかのデータを収集しようとしています。

ファイルから行を読み込んでいます。すべての行は次のとおりです。

[info] 1 - 12-04 15:33:37.542 : Finished createWalletRandom, total time 9898ms

ミリ秒を分析する必要があります(最小、最大、平均を取得します)。私はそれを得ることができますが、数学が機能するために9898msそれを削除する必要があります。ms

以下の行を試してください。何も変わりません。

MILLI_SECONDS=${RAW_MILLI_SECONDS%??}

次の操作を実行するとエラーが発生しますget_wallet_times.sh: line 23: -2: substring expression < 0

MILLI_SECONDS=${RAW_MILLI_SECONDS::-2}

これは私のコードです。

while read ONE_LINE;
do
    echo $ONE_LINE
    RAW_MILLI_SECONDS="$(cut -d' ' -f13 <<<"$ONE_LINE")"
    echo $RAW_MILLI_SECONDS
    MILLI_SECONDS=${RAW_MILLI_SECONDS::-2}
    MILLI_SECONDS=${RAW_MILLI_SECONDS%??}
    echo ${MILLI_SECONDS}
    LINE_COUNT=$((LINE_COUNT+1))
    FILE_SUM=$((FILE_SUM+MILLI_SECONDS))
done < logfile.txt

Mac固有のbash問題の場合に備えて、macOSにあります。他に必要なものがあれば教えてください。

ありがとうマット

ベストアンサー1

MacOSの実装に違いがあるかどうかはわかりませんが、bash次のようにRegExpベースの文字列を変更してみてください。

MILLI_SECONDS=${RAW_MILLI_SECONDS/ms/}

msパターンを空の文字列に置き換えます。

おすすめ記事