Skip to content

sindresorhus/parse-columns

parse-columns

Parse text columns, like the output of Unix commands

Install

npm install parse-columns

Usage

$ df -kP Filesystem 1024-blocks Used Available Capacity Mounted on /dev/disk1 487350400 467871060 19223340 97% / devfs 185 185 0 100% /dev map -hosts 0 0 0 100% /net 
import {promisify} from 'node:util'; import childProcess from 'node:child_process'; import parseColumns from 'parse-columns'; const execFileP = promisify(childProcess.execFile); const {stdout} = await execFileP('df', ['-kP']); console.log(parseColumns(stdout, { transform: (item, header, columnIndex) => { // Coerce elements in column index 1 to 3 to a number if (columnIndex >= 1 && columnIndex <= 3) { return Number(item); } return item; } })); /* [ { Filesystem: '/dev/disk1', '1024-blocks': 487350400, Used: 467528020, Available: 19566380, Capacity: '96%', 'Mounted on': '/' },  ] */

API

parseColumns(textColumns, options?)

textColumns

Type: string

The text columns to parse.

options

Type: object

separator

Type: string | RegExp Default: ' '

Separator to split columns on.

  • string: Single character separator (default behavior)
  • RegExp: Regular expression pattern for flexible matching
// Default space separator parseColumns(data); // Tab separator  parseColumns(data, {separator: '\t'}); // Any whitespace (spaces, tabs, etc.) parseColumns(data, {separator: /\s+/}); // Either spaces or tabs  parseColumns(data, {separator: /[ \t]/});
headers

Type: string[]

Headers to use instead of the existing ones.

transform

Type: Function

Transform elements.

Useful for being able to cleanup or change the type of elements.

The supplied function gets the following arguments and is expected to return the element:

  • element (string)
  • header (string)
  • columnIndex (number)
  • rowIndex (number)

Related

About

Parse text columns, like the output of unix commands

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 5