Comment faire pousser des citrouilles pour des tartes parfaites
15 octobre 2020
L'employé mécontent et les dommages qu'il peut faire – CloudSavvy IT
15 octobre 2020

Une invite de terminal sur un PC Linux.
Fatmawati Achmad Zaenuri / Shutterstock

Le Linux seq La commande génère des listes de nombres en un clin d'œil. Mais comment cette fonctionnalité peut-elle être mise en pratique? Nous allons vous montrer comment seq peut vous être utile.

La commande seq

À première vue, le Linux seq la commande semble être quelque chose d'une bizarrerie. Il vous permet de générer séquences de nombres rapidement et c’est tout! Le mot clé ici, cependant, est "rapidement". Dans un instant, vous verrez à quelle vitesse cette petite commande peut s’exécuter.

Quelle que soit la manière dont ils sont générés, quelle est l'utilité d'une liste de nombres? le seq La commande a été ajoutée à la 8e édition d'Unix en 1985. Elle existe depuis, donc elle doit faire quelque chose qui en vaut la peine.

le philosophie d'Unix est qu'il est plein de petits utilitaires qui font une chose et la font bien. L'un des principes centraux de cette philosophie est d'écrire des programmes qui acceptent l'entrée d'autres programmes. Bien sûr, cela signifie également que ces programmes doivent générer une sortie qui peut être utilisée comme entrée par d'autres programmes.

le seq La commande prend tout son sens lorsqu'elle est utilisée avec d'autres commandes qui utilisent sa sortie, que ce soit via des tubes ou une extension de ligne de commande.

Génération de liste de base

Si vous lancez seq avec un seul nombre comme paramètre de ligne de commande, il compte de un à ce nombre. Il imprime ensuite les numéros dans la fenêtre du terminal, un numéro par ligne, comme indiqué ci-dessous:

seq 6

le

Si vous tapez deux nombres sur la ligne de commande, le premier sera le numéro de début et le second sera le numéro de fin, comme indiqué ci-dessous:

seq 4 10

seq 4 10 dans une fenêtre de terminal.

Vous pouvez définir une taille de pas en incluant un troisième nombre. Il se situe entre les numéros de début et de fin. Nous tapons ce qui suit pour demander seq pour créer une liste de nombres commençant par six, se terminant par 48 et utilisant une étape de six:

seq 6 6 48

seq 6 6 48 dans une fenêtre de terminal.

Compter à rebours

On peut aussi demander seq pour créer une liste de nombres du plus élevé au plus bas. Pour ce faire, cependant, nous devons franchir une étape négative.

La commande suivante produit une liste qui compte de 24 à 12 par pas de 6 car nous tapons le pas comme un nombre négatif:

seq 24-6 12

seq 24 -6 12 dans une fenêtre de terminal.

Compter avec des décimales

Les numéros de début, de fin et d'étape peuvent également être des décimales. Si l'un des nombres est un nombre décimal, les autres sont également traités comme des nombres décimaux. La commande suivante génère une liste de nombres avec un pas de 0,2:

seq 1 0,2 2

seq 1 0,2 2 dans une fenêtre de terminal.

La vitesse de seq

seq est incroyablement rapide – le seul goulot d'étranglement est le temps qu'il vous faut pour taper la commande dans la fenêtre du terminal. Pour tester sa vitesse, demandons une liste de 250 000 numéros.

Nous tapons ce qui suit, en utilisant le temps pour voir combien de temps le processus prend pour se terminer:

temps carré 250000

time seq 250000 dans une fenêtre de terminal.

Les résultats sont affichés sous la liste. Même sur notre PC de test modérément alimenté, seq est étonnamment rapide.

Résultats de synchronisation pour la commande seq 250000 dans une fenêtre de terminal.

La liste entière a été créée et écrite à l'écran en environ 1/3 de seconde. Si nous redirigeons la liste dans un fichier, nous pouvons même éviter la surcharge de la saisie dans la fenêtre du terminal.

Pour ce faire, nous tapons ce qui suit:

heure seq 250000> nombres.txt

time seq 250000> numbers.txt dans une fenêtre de terminal.

Le temps nécessaire pour compléter la liste et créer le fichier est désormais d'environ 1/7 de seconde.

Utilisation d'un séparateur

Un caractère de nouvelle ligne est le caractère par défaut affiché entre chaque numéro dans une liste. C’est pourquoi ils apparaissent sous forme de liste verticale, avec chaque numéro sur sa propre ligne. Si vous en avez besoin, vous pouvez fournir un autre séparateur.

Par exemple, supposons que vous deviez créer une liste délimitée par des virgules, une liste divisée par deux points ou tout autre signe de ponctuation ou symbole. Le délimiteur est en fait une chaîne, vous pouvez donc utiliser plus d'un caractère.

Nous utiliserons le -s (séparateur) option. La commande suivante produira une liste délimitée par des virgules:

seq s, 6 6 36

Cette commande utilisera un deux-points (:) comme séparateur:

seq -s: 6 6 36

Cette commande dit seq pour utiliser deux traits d'union (-) comme séparateur:

seq -s-- 6 6 36

seq s, 6 6 36 dans une fenêtre de terminal.

Utilisation des chaînes de format

le seq la commande prend également en charge Style de langage C chaînes de format. Ceux-ci vous permettent de formater la sortie avec beaucoup plus de contrôle que de simplement spécifier un séparateur. Pour utiliser une chaîne de format, vous utilisez le -F (format) option.

La commande suivante indique seq pour utiliser des zéros pour compléter la sortie à deux caractères:

seq -f "% 02g" 6

seq -f "% 02g" 6 dans une fenêtre de terminal.

Nous pouvons formater la chaîne avec n'importe quel texte que nous aimons et placer le nombre n'importe où dans la chaîne, comme suit:

seq -f "Numéro% 02g dans une chaîne de format de type C" 6

seq -f "Numéro% 02g dans une chaîne de format de type C" 6 dans une fenêtre de terminal.

Un moyen rapide de définir le rembourrage zéro

Le moyen le plus rapide de définir un remplissage nul est d'utiliser le -w (largeur égale) option. Cela raconte seq pour utiliser des zéros pour compléter les nombres, de sorte qu'ils aient tous la même largeur que le plus grand nombre.

La commande suivante compte de 0 à 1000 par pas de 100 et tous les nombres seront complétés par des zéros:

seq -w 0 100 1000

seq -w 0 100 1000 dans une fenêtre de terminal.

Le nombre le plus long prend quatre caractères, donc tous les nombres plus étroits sont remplis de zéros jusqu'à cette largeur (même 0 est complété par quatre zéros).

Tuyauterie seq dans BC

En définissant le séparateur comme un symbole mathématique et en faisant passer la liste dans le avant JC commande, nous pouvons évaluer les nombres de cette liste.

La commande suivante génère une liste de nombres séparés par des astérisques (*), commençant à un et se terminant par six:

seq -s * 6

Si nous alimentons cette liste dans avant JC, il évalue la liste à l'aide des astérisques (*) comme symboles de multiplication:

seq -s * 6 | avant JC

Nous pouvons également le faire avec d'autres symboles. La commande ci-dessous utilise un signe plus (+) pour créer une liste dans laquelle tous les numéros sont ajoutés:

seq -s + 5

Nous tapons ce qui suit pour le canaliser dans avant JC et évaluez la liste:

seq -s + 5 | avant JC

seq -s * 6 dans une fenêtre de terminal.

Création de fichiers avec seq

le toucher commander met à jour les horodatages sur les fichiers. Si le fichier n’existe pas, appuyez sur le crée. Nous pouvons utiliser l'expansion de la ligne de commande avec toucher et seq pour créer une collection de fichiers nommés par thème, mais numérotés différemment.

Nous allons créer un ensemble de 10 fichiers avec le même nom de base et un numéro différent (fichier-1.txt, fichier-2.txt, etc.). Nous tapons ce qui suit:

touchez $ (seq -f "fichier-% g.txt" 1 10)

Ensuite, nous tapons ce qui suit pour vérifier les fichiers:

fichier ls *

touchez $ (seq -f "file-% g.txt" 1 10) dans une fenêtre de terminal.

Utilisation de seq dans les boucles Bash

On peut utiliser seq dans les scripts Bash pour contrôler les boucles avec des décimales.

Tapez le texte suivant dans un éditeur, puis enregistrez-le sous «loops.sh»:

#! / bin / bash

  pour val en $ (seq 5 0,2 6,6); faire

  echo "La valeur est maintenant: $ val"

terminé

Ensuite, nous tapons ce qui suit pour rendre notre nouveau script exécutable:

chmod + x boucle.sh

chmod + x loop.sh dans une fenêtre de terminal.

Lorsque nous exécutons le script, le compteur de boucles est imprimé dans la fenêtre du terminal. Nous pouvons ensuite taper ce qui suit pour voir le compteur décimal de boucle augmenter à chaque itération de la boucle:

./loop.sh

./loop.sh dans une fenêtre de terminal.

Souviens-toi que seq peut aussi compter à rebours; vous pouvez l'utiliser dans les boucles de la même manière.

Agréable et simple

Une chose à propos de seq il n’y a pas beaucoup de courbe d’apprentissage. Il a un rafraîchissant court homme page, mais vous pouvez toujours l'utiliser de manière intéressante.

Parce que nous avons souvent besoin de créer rapidement des fichiers de test avec des tailles réalistes, nous utilisons seq avec une chaîne de format. Nous redirigeons ensuite la sortie pour créer un fichier contenant autant de lignes de données factices que nous le souhaitons.

//]]>