全力で怠けたい

怠けるために全力を尽くしたいブログ。

入力行をいろんなやり方で連結したり分割する 🍡dango コマンドを作りました。

入力行をいろんなやり方で連結したり分割する 🍡dango コマンドを作りました。

github.com

🍡dango コマンドとは?

dango コマンドは入力行の行数、文字数、バイト数あるいは単語数を数えて入力行を任意の数で連結したり分割するツールです。

dango コマンドは標準入力を読み取って、読み取った要素が指定した数になるごとにそれを1行にまとめて標準出力に出力します。 このへんは実際に使ってみるとイメージしやすいと思うのでこのあと使い方を書いてみます。

$ cat << EOF | dango
━
🟠
🟡
🟢
━
EOF
━🟠🟡🟢━

使い方

行数を数えて入力行を連結したり分割する

-l オプションを指定すると行数を数えて入力行を連結したり分割します。

連結したり分割する行数は -n オプションで指定します。 -n オプションはデフォルト 00 を指定すると入力行をすべて連結します。

$ seq 1 4 | dango -l -n 2
12
34

$ seq 1 4 | dango -l
1234

入力行はデリミターを指定して連結したり分割することもできます。

$ echo 'dango' | dango -c -d '-'
d-a-n-g-o

$ seq 1 4 | dango -l -d '-'
1-2-3-4

文字数を数えて入力行を連結したり分割する

-c オプションを指定すると文字数を数えて入力行を連結したり分割します。

$ echo '━🟠🟡🟢━' | dango -c -n 1
━
🟠
🟡
🟢
━

$ echo '━🟠🟡🟢━' | dango -c -n 3
━🟠🟡
🟢━

バイト数を数えて入力行を連結したり分割する

-b オプションを指定するとバイト数を数えて入力行を連結したり分割します。

$ echo 'dango' | dango -b -n 1
d
a
n
g
o

$ echo 'dango' | dango -b -n 3
dan
go

単語数を数えて入力行を連結したり分割する

-w オプションを指定すると単語数を数えて入力行を連結したり分割します。

$ echo 'Dango is a program that concatenates and splits standard input.' | dango -w -n 2 -d ' '
Dango is
a program
that concatenates
and splits
standard input.

インストール方法

Homebrew

$ brew tap ebc-2in2crc/tap
$ brew install dango

Developer

Go 1.16 以降。

$ go install github.com/ebc-2in2crc/dango@latest

Go 1.15 以前。

$ go get -u github.com/ebc-2in2crc/dango/...

手動でのインストール

https://github.com/ebc-2in2crc/dango/releases からダウンロードした zip ファイルを展開した中にあるファイルをパスの通ったディレクトリに入れる。

🍡dango を作った動機

入力行を連結したり分割するコマンドはすでにいろいろあるけど用途ごとにコマンドを使い分けるのが少し面倒だなーと感じて 🍡dango コマンドを作りました。 車輪の再発明です。 あ、フィルターコマンドを作ってみたかったというのもあるかも。

🍡dango コマンドができるすべてのことは tr, xargs, foldsed で同じことができます。そのへんは README に。

まとめ

バグとかあると思いますし「こーしたら使いやすくなる」とかあったら issue とか PR 作ったり声かけてもらえると嬉しいです。

ということで 🍡dango コマンドの紹介でした。