Comment utiliser la commande seq sous Linux

Contenu

Une invite de terminal sur un PC Linux.

Sous Linux seq La commande génère des listes de nombres en un clin d'œil. Mais, Comment implémenter cette fonctionnalité? Nous allons vous montrer comment seq peut vous aider.

La commande seq

À première vue, Linux seq La commande semble un peu étrange. Il vous permet de générer séquences de nombres rapide et prêt! Malgré cela, le mot-clé ici est “vite”. Dans un moment, vous verrez à quelle vitesse cette petite commande peut être exécutée.

Peu importe comment ils sont générés, Quelle est l'utilité d'une liste de nombres? Les seq La commande a été ajoutée à la 8e édition d'Unix en 1985. J'y suis depuis, donc tu dois faire quelque chose de valable.

Les Philosophie Unix c'est qu'il regorge de petits utilitaires qui font une chose et le font bien. L'un des principes centraux de cette philosophie est d'écrire des programmes qui acceptent les informations d'autres programmes.. De toute façon, Cela signifie également que ces programmes doivent générer une sortie qui peut être utilisée comme entrée par d'autres programmes..

Les seq La commande entre en jeu lorsqu'elle est utilisée avec d'autres commandes qui utilisent sa sortie, soit via un pipeline ou une extension de ligne de commande.

Génération de liste de base

Si vous jetez seq avec un seul numéro comme paramètre de ligne de commande, compter de un à ce nombre. Plus tard, imprimez les numéros dans la fenêtre du terminal, un numéro par ligne, comme il est montré dans ce qui suit:

seq 6

Si vous tapez deux nombres sur la ligne de commande, le premier sera le numéro de départ et le second sera le numéro de fin, comme il est montré dans ce qui suit:

seq 4 10

Vous pouvez déterminer une taille de pas en incluant un troisième nombre. Il est situé entre les numéros de début et de fin. Nous écrivons ce qui suit pour demander seq pour créer une liste de nombres commençant par six, fini en 48 et utilisez un pas de six:

seq 6 6 48

Compter à rebours

On peut aussi demander seq pour créer une liste de nombres du plus élevé au plus bas. Malgré cela, pour le faire, nous devons faire un pas qui est négatif.

La commande suivante produit une liste qui compte à partir de 24 une 12 par étapes de 6 parce que nous écrivons le pas comme un nombre négatif:

seq 24 -6 12

Compter avec des décimales

Les numéros de départ, final et step peuvent aussi être des décimales. Si l'un des nombres est décimal, les autres sont également traités comme des décimales. La commande suivante génère une liste de nombres avec un pas de 0.2:

seq 1 0.2 2

La vitesse de séquence

seq c'est incroyablement rapide; le seul goulot d'étranglement est le temps qu'il faut pour taper la commande dans la fenêtre du terminal. Pour tester votre vitesse, demandons une liste de 250.000 nombres.

Nous écrivons ce qui suit, en utilisant le time commande pour voir combien de temps la procédure prend pour se terminer:

séquence de temps 250000

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

La liste entière a été créée et écrite à l'écran en environ 1/3 seconde. Si on redirige la liste vers un fichier, on peut même éviter la surcharge d'écriture dans la fenêtre du terminal.

Pour le faire, nous écrivons ce qui suit:

séquence de temps 250000 > nombres.txt

Le temps qu'il faut pour compléter la liste et créer le fichier est maintenant d'environ 1/7 seconde.

Utiliser un séparateur

Un caractère de nouvelle ligne est le caractère par défaut qui est 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 c'est nécessaire, peut 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, donc vous pouvez 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:

séquences, 6 6 36

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

seq -s: 6 6 36

Cette commande dit seq utiliser deux tirets-) comme séparateur:

seq -s-- 6 6 36

Utiliser des chaînes de format

Les seq la commande est également prise en charge Style de langue 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, Utilisez le -f option (format).

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

seq -f "%02g" 6

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, de la manière suivante:

seq -f "Nombre g dans une chaîne de format de type C" 6

Un moyen rapide de configurer le rembourrage zéro

Le moyen le plus rapide de déterminer le remplissage zéro est d'utiliser le -w (largeur égale) option. Cela dit seq utiliser des zéros pour remplir les nombres, pour qu'ils aient tous la même largeur que le plus grand nombre.

La commande suivante compte 0 une 1000 par étapes de 100, et tous les nombres seront remplis de zéros:

seq -w 0 100 1000

Le nombre le plus long a quatre caractères, donc tous les nombres plus étroits sont remplis de zéros jusqu'à cette largeur (compris 0 est rempli de quatre zéros).

Pipe seq en bc

En déterminant le séparateur comme un symbole mathématique et en pipetant la liste dans le bc commander, pouvons évaluer les nombres dans cette liste.

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

seq -s* 6

Si nous alimentons cette liste sur bc, évaluer 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 suivante utilise un signe plus (+) pour créer une liste dans laquelle tous les numéros sont ajoutés:

seq -s+ 5

Nous avons écrit ce qui suit pour canaliser cela dans bc et parcourir la liste:

seq -s+ 5 | avant JC

Créer des fichiers avec seq

Les touch commander mettre à jour les horodatages dans les fichiers. Si le fichier n'existe pas, toucher le créer. Nous pouvons utiliser l'expansion de la ligne de commande avec touch et seq pour créer une collection de fichiers avec des noms thématiques 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 (archive-1.txt, archive-2.txt, etc.). Nous écrivons ce qui suit:

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

Plus tard, nous écrivons ce qui suit pour vérifier les fichiers:

fichier ls*

Utiliser seq dans les boucles Bash

On peut utiliser seq dans les scripts Bash pour gérer les boucles avec des décimales.

tapez le texte suivant dans un éditeur, puis enregistrez-le sous “loops.sh”:

#!/bin/bash

  for val in $(seq 5 0.2 6.6); do

  echo "La valeur est maintenant: $Val"

terminé

Ensuite, nous écrivons ce qui suit afin que notre nouveau script soit exécutable:

chmod +x loop.sh

Lorsque nous exécutons le script, le compteur de boucle est imprimé dans la fenêtre du terminal. Plus tard, nous pouvons taper ce qui suit pour voir que le compteur de boucle décimale augmente à chaque itération de la boucle:

./loop.sh

Se souvenir seq vous pouvez également compter à rebours; vous pouvez l'utiliser dans les boucles de la même manière.

Agréable et simple

Une chose à propos seq c'est qu'il n'y a pas beaucoup de courbe d'apprentissage. Il a un rafraîchissant court man 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. Plus tard, nous redirigeons la sortie pour créer un fichier contenant autant de lignes de données factices que nous le souhaitons.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.