code: function matchBodyList (stream, line) {
    const raw = {}
    try {
      const columns = stream._columnsPositions
      raw.datetime = line.substring(0, columns[0])
      raw.attributes = line.substring(columns[0], columns[1])
      raw.size = line.substring(columns[1], columns[2])
      raw.sizeCompressed = line.substring(columns[2], columns[3])
      raw.file = line.substring(columns[3])
    } catch (err) {
      return null
    }
    const datetime = (!isEmpty(raw.datetime)) ? new Date(Date.parse(raw.datetime)) : undefined
    const attributes = (!isEmpty(raw.attributes)) ? raw.attributes.trim() : undefined
    const size = (!isEmpty(raw.size)) ? Number.parseInt(raw.size) : undefined
    const sizeCompressed = (!isEmpty(raw.sizeCompressed)) ? Number.parseInt(raw.sizeCompressed) : undefined
    const file = (!isEmpty(raw.file)) ? normalizePath(raw.file.trim()) : undefined
    return { datetime, attributes, size, sizeCompressed, file }
  }
docs: 7z list command ouptuts lines that looks like this: 2018-09-29 09:06:15 ....A            9           24  DirHex/42550418a4ef9 The caveat is that each value can be empty. So we don't use a Regexp but the values of were the columns are to split the line into an object.