ファイルの各行を最後のフィールドの1つの変数として読み込み、別のフィールドを別の変数として読み取るにはどうすればよいですか?

ファイルの各行を最後のフィールドの1つの変数として読み込み、別のフィールドを別の変数として読み取るにはどうすればよいですか?

ファイルの1行を2つの変数(最後のフィールド用の変数と別のフィールド用の変数)として読み取るにはどうすればよいですか?

たとえば、次のようなファイルがあります。

hello world! 10s
It is a good day. 4m
...

各行を2つの変数として読みたいです。 1 つは行末の時間間隔を含む変数、もう 1 つは行の前のフィールドを含む変数です。私が知っている限り、これを行う方法を知りたいです。

while read line 
do
    ...  # split $line into $message and $interval
    myprogram "$message" "$interval"
done < "$inputfile" 

ベストアンサー1

スペースにスペースが含まれていない場合は、次のように動作します。

#!/bin/bash

input=/path/to/input

while read -r line; do
    message=${line% *}
    interval=${line##* }
    echo "$message"
    sleep "$interval"
done < "$input"

${line% *} 最後の空白文字の後のすべての内容を削除します。

${line##* }最後の空白文字の前の内容をすべて削除します。

おすすめ記事