# [Commandes Linux] Xan

## Introduction

Cet outil permet de travailler avec les fichiers CSV en ligne de commande. En plus il est développé en Rust ce qui le rend beaucoup plus performant qu'un excel, ou libre office.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2025-04/scaled-1680-/2hDimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2025-04/2hDimage.png)

## Manuel

#### Documentations

La doc est vraiment complète :

- [https://github.com/medialab/xan/tree/master/docs/cmd](https://github.com/medialab/xan/tree/master/docs/cmd)
- [https://korben.info/xan-couteau-suisse-manipulation-csv-ligne-commande.html](https://korben.info/xan-couteau-suisse-manipulation-csv-ligne-commande.html)

#### View

Pour afficher un fichier csv basiquement :

```bash
xan view file.csv
```

#### Headers

Pour afficher les noms des colonnes :

```bash
xan headers
```

#### Count

Pour savoir le nombre d'entrées :

```bash
xan count
```

#### Select

```bash
xan select col1,col3,col5
```

#### Sort

Pour trier sur un colonne (par exemple les dates) :

```
xan sort -R -s 'date'
```

<p class="callout success">Dans cet exemple, on tri dans l'ordre décroissant avec le **-R** sur la colonne **date** .</p>

#### Filter

```bash
xan filter 'country eq "FR"'
```

<p class="callout info">Vous pouvez consulter la documentation des expressions avec **xan help cheatsheet** .</p>

#### Agg

Pour effectuer une aggrégation sur une colonne comme une somme des valeurs :

```bash
xan agg 'sum(Revenu) as total_revenus'
```

#### Groupby

Il s'agit d'une alternative à Agg qui permet d'effectuer une expression (comme une somme) pour chaque valeur d'une autre colonne.

Voici un exemple où on calcul le total des revenus pour chaque entreprise :

```bash
xan groupby 'Entreprise' 'sum(Revenu) as total_revenus'
```

#### From

Pour convertir d'autre formats de fichiers en CSV notamment du **json** ou **jsonl** :

```bash
xan from -f <FORMAT> <FILE>.json
```

#### Plot

Permet de générer des graphiques :

```bash
xan plot -LT 'date' 'revenu' --rows 10 --y-min 1 -c 'entreprise'
```

Autre exemple si vous souhaitez afficher le nombre d'occurence d'un champ dans le temps (si vous n'avez pas de Y) :

```bash
xan plot --count -LT 'date' --rows 10 --y-min 1
```