Facter.add('blkid') do setcode do lines = Facter::Core::Execution.execute('blkid').split("\n") out = {} lines.each do |line| a = line.match(/^([^:]*): (.*)/) d = {} a[2].split(' ').each do |pair| m = pair.match(/(\w*)="(([^"]|\\")*)"/) d[m[1]] = m[2] end out[a[1]] = d end out end end