guesswidth icon indicating copy to clipboard operation
guesswidth copied to clipboard

Guess the width (fwf) output without delimiters in commands that output to the terminal.

guesswidth

Go Reference Go

Overview

guesswidth guesses the column position for fixed-width formats(fwf).

The output of the ps command has no delimiters, making the values difficult to machine-readable. guesswidth guesses smarter than just space delimiters.

guesswidth is guessed based on the position of characters in the header. So having a header will give you better results.

Install command

There is also a guesswidth command.

go install github.com/noborus/guesswidth/cmd/guesswidth@latest

Guess the width output with no delimiters in the command.

$ ps
    PID TTY          TIME CMD
 302965 pts/3    00:00:12 zsh
 733211 pts/3    00:00:00 ps
 733212 pts/3    00:00:00 tee
 733213 pts/3    00:00:00 guesswidth

Split the output like this:

$ ps | guesswidth
    PID| TTY     |     TIME|CMD
 302965| pts/3   | 00:00:08|zsh
 539529| pts/3   | 00:00:00|ps
 539530| pts/3   | 00:00:00|guesswidth

It can be converted to csv.

$ ps | guesswidth csv
PID,TTY,TIME,CMD
302965,pts/3,00:00:12,zsh
733211,pts/3,00:00:00,ps
733212,pts/3,00:00:00,tee
733213,pts/3,00:00:00,guesswidth

Examples

guesswidth inserts a delimiter (| by default) (Colors are changed here for clarity).

Even if there are spaces in the header or body, they will be separated correctly.

ps

ps

docker ps

docker-ps

docker node

docker node ls