An open API service indexing awesome lists of open source software.

https://github.com/noborus/guesswidth

Guess the width (fwf) output without delimiters in commands that output to the terminal.
https://github.com/noborus/guesswidth

fixed-width fwf

Last synced: 7 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# guesswidth

[![Go Reference](https://pkg.go.dev/badge/github.com/noborus/guesswidth.svg)](https://pkg.go.dev/github.com/noborus/guesswidth) [![Go](https://github.com/noborus/guesswidth/actions/workflows/build.yml/badge.svg)](https://github.com/noborus/guesswidth/actions/workflows/build.yml)

## 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.

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

Guess the width output with no delimiters in the command.

```console
$ 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:

```console
$ 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`.

```console
$ 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
```

```console
ps | guesswidth --align
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
```

## Usage

```console
$ guesswidth -h [~/dev/src/github.com/noborus/guesswidth]
Guess the width of the columns from the header and body,
split them, insert fences and output.

Usage:
guesswidth [flags]
guesswidth [command]

Available Commands:
completion Generate the autocompletion script for the specified shell
csv Output in csv format
help Help about any command

Flags:
-a, --align align the output
--fence string fence (default "|")
--header int header line number (default 1)
-h, --help help for guesswidth
--scannum int number of line to scan (default 100)
--split int maximum number of splits (default -1)
-v, --version version for guesswidth

Use "guesswidth [command] --help" for more information about a command.
```

## 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](./docs/ps.png)

### docker ps

![docker-ps](./docs/docker-ps.png)

### docker node

![docker node ls](./docs/docker-node.png)