파일의 각 줄을 마지막 필드에 대한 하나의 변수로 읽고 다른 필드를 다른 변수로 읽으려면 어떻게 해야 합니까?

파일의 각 줄을 마지막 필드에 대한 하나의 변수로 읽고 다른 필드를 다른 변수로 읽으려면 어떻게 해야 합니까?

파일의 한 줄을 두 개의 변수(마지막 필드용 변수와 다른 필드용 변수)로 읽으려면 어떻게 해야 합니까?

예를 들어 다음과 같은 파일이 있습니다.

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

각 행을 두 개의 변수로 읽고 싶습니다. 하나는 행 끝의 시간 간격을 포함하는 변수이고 다른 하나는 행 앞의 필드를 포함하는 변수입니다. 내가 아는 한 이 작업을 수행하는 방법을 알고 싶습니다.

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##* }마지막 공백 문자 앞의 모든 내용을 제거합니다.

관련 정보