Terve!
Sed on kyllä todella kätevä tuonkaltaisiin tehtäviin. Mutta Bashissa on tosin jo sisäänrakennettuna valmiit työkalut tiedostojen lukemiseen. Tämä on mielestäni elegantein tapa koodata tehtävä "nimet tiedostosta muuttujaan":
# alusta tyhjä taulukko
nimet=()
# silmukka joka käy nimet.dat tiedoston ja lisää ne taulukkoon
while read nimi
do
nimet+=$nimi
done<nimet.dat
# kaikki nimet
echo ${nimet[@]}
# ensimmäinen nimi
echo ${nimet[0]}
Eleganttia tässä on se, ettei tarvitse käyttää muuta kuin bashin builtineja ja ohjelmointi ei vaikeudu moninaisista muuttujista. Esim. mitenkäs sitten muuttuja nimettäisiin, kun nimien määrä ylittää aakkosten lukumäärän?
EDIT: Ok, luin kysymyksesi hieman väärin. Tässä siis 95% bash-ratkaisu alkuperäiseen ongelmaasi:
nimet=
# A:sta J:hin tässä esimerkissä
for i in {A..J}
do
nimet+="$(grep "^$i=" tiedosto.dat) "
done
nimet=( $nimet )
# printtaa Matti
echo ${nimet[0]:2}
Ehkäpä yksittäistapauksessa esitetty ja hyväksitodettu grepin ja cutin yhdistelmä on hyvä, mutta ylläoleva silmukointi hoitaa kaiken kerralla.