[Linux便利コマンド] csviewを入れてみる

## 環境

![](https://img.shields.io/badge/centos-7.7.1908-<COLOR>)

## 概要

普段仕事にて、csvを扱うことがよくあるのですが
CUIでのcsvビューワーがあるようなので入れてみます

https://github.com/wfxr/csview

## インストール

```shell
$ cargo install exa
```

#### 文字コードが違う!!

```shell
$ csview a.csv
[error] input is not utf8 encoded
```

またもエラー。
文字コードがutf8じゃないと駄目だと。

csviewのgithubのREADMEに書いてある通りiconvをかませば行けるよう。

```shell
$ iconv -f shift-jis -t UTF8//TRANSLIT a.csv| csview
+-------------+----------+----------------+
| コード      | 名称     | 説明           |
+-------------+----------+----------------+
| abc         | 消しゴム | よく消えるよ   |
| ABCDEFGHIJK | えんぴつ | もちやすいよ   |
|             |          | 芯も折れにくい |
+-------------+----------+----------------+
```

行けた！！！！ :clap:

## 見た目の種類を確認

```shell
$ ./csview --help
csview 0.3.5
A high performance csv viewer with cjk/emoji support.

USAGE:
    csview [FLAGS] [OPTIONS] [FILE] [SUBCOMMAND]

FLAGS:
    -h, --help          Prints help information
    -H, --no-headers    Specify that the input has no header row
    -t, --tsv           Use '\t' as delimiter for tsv, overrides '-d' option
    -V, --version       Prints version information

OPTIONS:
        --style <border>           Specify the border style [default: Ascii]  [possible values: None, Ascii, Sharp, Rounded, Reinforced, Markdown, Grid]
    -d, --delimiter <delimiter>    Specify the field delimiter [default: ,]

ARGS:
    <FILE>    File to read

SUBCOMMANDS:
    completion    Generate shell completion file
    help          Prints this message or the help of the given subcommand(s)
```

とのことで、`--style`でいろいろ変えれるみたい。

```shell
$ iconv -f shift-jis -t UTF8//TRANSLIT a.csv| csview --style none
 コード       名称      説明 
 abc          消しゴム  よく消えるよ 
 ABCDEFGHIJK  えんぴつ  もちやすいよ 
                        芯も折れにくい 
```

```shell
$ iconv -f shift-jis -t UTF8//TRANSLIT a.csv| csview --style ascii
+-------------+----------+----------------+
| コード      | 名称     | 説明           |
+-------------+----------+----------------+
| abc         | 消しゴム | よく消えるよ   |
| ABCDEFGHIJK | えんぴつ | もちやすいよ   |
|             |          | 芯も折れにくい |
+-------------+----------+----------------+
```

```shell
$ iconv -f shift-jis -t UTF8//TRANSLIT a.csv| csview --style sharp
┌─────────────┬──────────┬────────────────┐
│ コード      │ 名称     │ 説明           │
├─────────────┼──────────┼────────────────┤
│ abc         │ 消しゴム │ よく消えるよ   │
│ ABCDEFGHIJK │ えんぴつ │ もちやすいよ   │
│             │          │ 芯も折れにくい │
└─────────────┴──────────┴────────────────┘
```

```shell
$ iconv -f shift-jis -t UTF8//TRANSLIT a.csv| csview --style rounded
╭─────────────┬──────────┬────────────────╮
│ コード      │ 名称     │ 説明           │
├─────────────┼──────────┼────────────────┤
│ abc         │ 消しゴム │ よく消えるよ   │
│ ABCDEFGHIJK │ えんぴつ │ もちやすいよ   │
│             │          │ 芯も折れにくい │
╰─────────────┴──────────┴────────────────╯
```

```shell
$ iconv -f shift-jis -t UTF8//TRANSLIT a.csv| csview --style reinforced
┏─────────────┬──────────┬────────────────┓
│ コード      │ 名称     │ 説明           │
├─────────────┼──────────┼────────────────┤
│ abc         │ 消しゴム │ よく消えるよ   │
│ ABCDEFGHIJK │ えんぴつ │ もちやすいよ   │
│             │          │ 芯も折れにくい │
┗─────────────┴──────────┴────────────────┛
```

```shell
$ iconv -f shift-jis -t UTF8//TRANSLIT a.csv| csview --style markdown
| コード      | 名称     | 説明           |
|-------------|----------|----------------|
| abc         | 消しゴム | よく消えるよ   |
| ABCDEFGHIJK | えんぴつ | もちやすいよ   |
|             |          | 芯も折れにくい |
```

```shell
$ iconv -f shift-jis -t UTF8//TRANSLIT a.csv| csview --style grid
┌─────────────┬──────────┬────────────────┐
│ コード      │ 名称     │ 説明           │
├─────────────┼──────────┼────────────────┤
│ abc         │ 消しゴム │ よく消えるよ   │
├─────────────┼──────────┼────────────────┤
│ ABCDEFGHIJK │ えんぴつ │ もちやすいよ   │
│             │          │ 芯も折れにくい │
└─────────────┴──────────┴────────────────┘
```

普段は改行がよくされるようなcsvを扱うことが多いので、個人的にはgridが一番よいですかねー。

## エイリアス

毎回iconvの指定をするのはめんどくさいのでエイリアス（function）を用意しておこうと思います

shift-jisへの変換だから`csview` + `s`で`csviews`にしました。。
ついでに表示のstyleも乗っけておきます

```shell
function csviews() {
  command iconv -f shift-jis -t UTF8//TRANSLIT $1 | csview --style grid
}
```

```shell
$ csviews a.csv 
┌─────────────┬──────────┬────────────────┐
│ コード      │ 名称     │ 説明           │
├─────────────┼──────────┼────────────────┤
│ abc         │ 消しゴム │ よく消えるよ   │
├─────────────┼──────────┼────────────────┤
│ ABCDEFGHIJK │ えんぴつ │ もちやすいよ   │
│             │          │ 芯も折れにくい │
└─────────────┴──────────┴────────────────┘
```

あー便利。

## まとめ

大きいものを見るときはしんどそうですが、ちょっとした確認でわざわざソフトで開いたりするのも面倒・・というときには
とても便利そうです。

qiita上では見た目が行間のpaddingが効いてしまってるため線が分かれてるのですが、実際のコンソール上では線はきれいにくっついて引かれているので
ぜひ気になった方は実際に試してみてみてください。