TUPLE: disk-free filesystem size used avail percent mount ; EBNF: parse-df spaces = (" " | "\t" | "\n")+ digit = [0-9] number = digit+ => [[ string>number ]] filesystem = (!(" ") .)+ => [[ >string ]] size = number => [[ 1024 * ]] used = number => [[ 1024 * ]] avail = number => [[ 1024 * ]] percent = number "%" => [[ first ]] mount = (!(" ") .)+ => [[ >string ]] rule=filesystem:a spaces size:b spaces used:c spaces avail:d spaces percent:e spaces mount:f => [[ a b c d e f disk-free boa ]] ;EBNF : free-space ( -- seq ) "df" >>command ascii lines 1 tail [ parse-df ] map ;