文字列の一部を変数として抽出するには?

文字列の一部を変数として抽出するには?

次のようないくつかのファイルの行があります。

attempting to create a 512^3 level (with Dirichlet BC) using a 16^3 grid of 32^3 boxes and 800 tasks...

ここで512^3、、16^34つの数字を抽出し、異なる用途でそれぞれ4つの変数、、、およびに割り当てたいと思います。32^3800levelgridboxestasks

どうすればいいですか?

ベストアンサー1

Bashは正規表現を=~in演算子と一致させることができます[[ ... ]]

#! /bin/bash

line='attempting to create a 512^3 level (with Dirichlet BC) using a 16^3 grid of 32^3 boxes and 800 tasks...'
num='([0-9^]+)'
nonum='[^0-9^]+'
if [[ $line =~ $num$nonum$num$nonum$num$nonum$num ]] ; then
    level=${BASH_REMATCH[1]}
    grid=${BASH_REMATCH[2]}
    boxes=${BASH_REMATCH[3]}
    tasks=${BASH_REMATCH[4]}
    echo "Level $level, grid $grid, boxes $boxes, tasks $tasks."
fi

おすすめ記事