Tcl seria uma boa escolha aqui: esse arquivo de configuração tem uma sintaxe compatível com Tcl:
$ cat parsehosts.tcl
proc define {name data} {
array set host $data
if {[string match {*switch*} [string tolower $host(use)]]} {
puts "$host(host_name) $host(address)"
}
}
source [lindex $argv 0]
$ tclsh parsehosts.tcl hosts.cfg
switchlan 192.168.2.1
Então, no bash, você deve dizer
read hostname address < <(tclsh parsehosts.tcl hosts.cfg)
echo $hostname
echo $address