Como posso ler cada linha de um arquivo em uma variável para o último campo e outra variável para os outros campos?

0

Como posso ler uma linha de um arquivo em duas variáveis: uma variável para o último campo e a outra variável para os outros campos?

Por exemplo, eu tenho um arquivo:

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

Eu gostaria de ler cada linha em duas variáveis: uma variável contém o intervalo de tempo no final da linha, e a outra variável contém os campos antes dela. Eu queria saber como fazer isso; isso é o máximo que eu consegui:

while read line 
do
    ...  # split $line into $message and $interval
    myprogram "$message" "$interval"
done < "$inputfile" 
    
por Tim 08.11.2018 / 23:38

1 resposta

3

Contanto que o intervalo não contenha espaço em branco, isso deve funcionar:

#!/bin/bash

input=/path/to/input

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

${line% *} Irá remover tudo depois do último caractere de espaço

${line##* } irá remover tudo antes do último caractere de espaço

    
por 09.11.2018 / 00:06