Outils pour utilisateurs

Outils du site


autre:seq_et_jot

seq et jot

La commande seq est utilisée sous Linux pour créer une séquence (d'où son nom…).

[cyriac@vaio ~]$ seq 3
1
2
3

Sous OpenBSD, seq n'existe pas (et inutile de le chercher…). En revanche, jot est disponible :

$ jot 3
1
2
3

Dans ces conditions, les différences ne sont pas flagrantes.

Padding

Voyons un aspect important des séquences de chiffres : le padding (ou remplissage).

Pour seq :

[cyriac@vaio ~]$ seq -w 1 10
01
02
...
09
10

Et avec jot :

$ jot -w '%02d' 10
01
02
...
09
10

OK, la syntaxe est un peu plus délicate, mais on peut voir ici un avantage certain : il est possible de faire du remplissage sur plusieurs caractères sans pour autant avoir des chiffres importants. Je m'explique : avec sed, il est possible de faire du padding sur 4 caractères, mais uniquement si on compte jusqu'à 1000 (cela dit, avec un ajout de '| head -n 5' ça marche aussi hein…).

[cyriac@vaio ~]$ seq -w 1 1000
0001
0002
...
0546
...
0999
1000

Avec jot, les choses sont plus simples :

$ jot -w '%04d' 5 
0001
0002
0003
0004
0005

Séquences quelconques

Pour sed, pas beaucoup de possibilités :

[cyriac@vaio ~]$ seq -w 350 355
350
351
352
353
354
355

La syntaxe de jot est, là encore, plus compliquée :

$ jot 6 350 355           
350
351
352
353
354
355

En fait, on demande à jot de donner 6 chiffres entre 350 et 355. Il est possible de donner la précision :

$ jot 6 350 355 1

Spécificités de jot

La complexité de la syntaxe de jot s'explique par le fait qu'il est bien plus puissants que seq.

Décimaux

jot peut générer des nombres décimaux :

$ jot -w '%g' 5 0 1  
0
0.25
0.5
0.75
1

Aléats

Ici encore, jot peut être utile, en générant des nombres pseudo-aléatoires :

$ jot -r 3 1 1000 
62
915
896

Séparateurs

Il est possible de demander à jot de séparer les résultats par autre chose qu'un saut de ligne :

$ jot 3 1 1000          
1
500
1000
$ jot -s " " 3 1 1000   
1 500 1000
$ jot -s "|" 3 1 1000   
1|500|1000
$ jot -s " / " 3 1 1000 
1 / 500 / 1000
$ jot -s "" 3 1 1000
15001000

L'ASCII

Jot sait aussi générer des séquences de caractères alphabétiques (en fait, tout le code ASCII) plutôt que des chiffres :

$ jot -c 3 A Z
A
M
Z

Mais il peut faire mieux que ça, comme tracer une ligne de 25 tirets (-b répète un symbole):

$ jot -s "" -b - 25 
-------------------------

Ou encore générer un mot de passe de 10 caractères :

$ jot -r -s "" -c 10 33 126 
6GxSF/nWjg
$ jot -r -s "" -c 10 33 126 
a}=5UaqN$Y
$ jot -r -s "" -c 10 33 126 
wd2.60buQ_
$ jot -r -s "" -c 10 33 126 
{h[8?]b07F
$ jot -r -s "" -c 10 33 126 
P?0l8^aD<v
$ jot -r -s "" -c 10 33 126 
r'-MtJs.Fn
$ jot -r -s "" -c 10 33 126 
hBz}2o54_K
autre/seq_et_jot.txt · Dernière modification: 2013/11/21 21:20 par cyriac