Como usar o comando seq no Linux

Conteúdo

Um prompt de terminal em um PC Linux.

El Linux seq O comando gera listas de números em um piscar de olhos. Mas, Como essa funcionalidade pode ser implementada? Mostraremos como a seq pode ajudá-lo.

O comando seq

A primeira vista, Linux seq O comando parece um tanto estranho. Ele permite que você gere sequências numéricas rápido e pronto! Apesar disto, la keyword aquí es “rapidamente”. Num momento, você verá o quão rápido este pequeno comando pode ser executado.

Independentemente de como eles são gerados, Quão útil é uma lista de números? a seq O comando foi adicionado à 8ª edição do Unix em 1985. Estive lá desde então, então você deve fazer algo que valha a pena.

a Filosofia Unix é que ele está cheio de pequenos utilitários que fazem uma coisa e a fazem bem. Um dos princípios centrais dessa filosofia é escrever programas que aceitem informações de outros programas.. De qualquer forma, Isso também significa que esses programas devem gerar uma saída que pode ser usada como entrada por outros programas..

a seq O comando entra em ação quando usado com outros comandos que fazem uso de sua saída, seja via pipeline ou expansão de linha de comando.

Geração de lista básica

Se você jogar seq com um único número como parâmetro de linha de comando, conte de um a esse número. Mais tarde imprima os números na janela do terminal, um número por linha, como é mostrado a seguir:

seq 6

Se você digitar dois números na linha de comando, o primeiro será o número inicial e o segundo será o número final, como é mostrado a seguir:

seq 4 10

Você pode determinar o tamanho do passo incluindo um terceiro número. Ele está localizado entre os números inicial e final. Escrevemos o seguinte para perguntar seq para criar uma lista de números começando com seis, Terminando em 48 e use uma etapa de seis:

seq 6 6 48

Contando para trás

Nós também podemos pedir seq para criar uma lista de números do maior ao menor. Apesar disto, para faze-lo, devemos dar um passo que é negativo.

O comando a seguir produz uma lista que conta a partir de 24 uma 12 em passos de 6 porque escrevemos a etapa como um número negativo:

seq 24 -6 12

Contando com decimais

Os números iniciais, final e etapa também podem ser decimais. Se algum dos números for decimal, os outros também são tratados como decimais. O comando a seguir gera uma lista de números com uma etapa de 0.2:

seq 1 0.2 2

A velocidade do seq

seq é incrivelmente rápido; o único gargalo é o tempo que leva para digitar o comando na janela do terminal. Para testar sua velocidade, vamos pedir uma lista de 250.000 números.

Nós escrevemos o seguinte, usando o time comando para ver quanto tempo o procedimento leva para ser concluído:

tempo seq 250000

Os resultados são exibidos abaixo da lista. Mesmo em nosso PC de teste de energia moderada, seq é surpreendentemente rápido.

A lista inteira foi criada e gravada na tela em aproximadamente 1/3 de segundo. Se redirecionarmos a lista para um arquivo, podemos até evitar a sobrecarga de escrita na janela do terminal.

Para faze-lo, nós escrevemos o seguinte:

tempo seq 250000 > numbers.txt

O tempo que leva para completar a lista e criar o arquivo agora é de aproximadamente 1/7 de segundo.

Usando um separador

Um caractere de nova linha é o caractere padrão que é exibido entre cada número em uma lista. É por isso que aparecem como uma lista vertical, com cada número em sua própria linha. Sim é necessário, pode fornecer outro separador.

Como um exemplo, suponha que você precise criar uma lista delimitada por vírgulas, uma lista dividida por dois pontos ou qualquer outra marca de pontuação ou símbolo. O delimitador é na verdade uma string, então você pode usar mais de um caractere.

Nós vamos usar o -s (separador) opção. O seguinte comando irá produzir uma lista delimitada por vírgulas:

seq s, 6 6 36

Este comando usará dois pontos (:) como separador:

seq -s: 6 6 36

Este comando diz seq use dois hifens-) como separador:

seq -s-- 6 6 36

Use strings de formato

a seq o comando também é suportado Estilo de linguagem C strings de formato. Isso permite que você formate a saída com muito mais controle do que simplesmente especificar um separador.. Para usar uma string de formato, use o -f opção (formato).

O seguinte comando diz seq usar zeros para preencher a saída com dois caracteres:

seq -f "%02g" 6

Podemos formatar a string com qualquer texto que quisermos e colocar o número em qualquer lugar da string, na próxima maneira:

seq -f "Number %02g in a C-like format string" 6

Uma maneira rápida de configurar o preenchimento de zero

A maneira mais rápida de determinar o preenchimento de zero é usar o -w (largura igual) opção. Isso diz seq use zeros para preencher os números, de modo que todos tenham a mesma largura do maior número.

O seguinte comando conta 0 uma 1000 em passos de 100, e todos os números serão preenchidos com zeros:

seq -w 0 100 1000

O número mais longo tem quatro caracteres, então todos os números mais estreitos são preenchidos com zeros até essa largura (inclusivo 0 é preenchido com quatro zeros).

Tubo seq em bc

Ao determinar o separador como um símbolo matemático e canalizar a lista para o bc comando, nós podemos avalie os números dessa lista.

O comando a seguir gera uma lista de números separados por asteriscos (*), começando com um e terminando com seis:

seq -s * 6

Se alimentarmos essa lista bc, avalie a lista usando os asteriscos (*) como símbolos de multiplicação:

seq -s * 6 | ac

Também podemos fazer isso com outros símbolos. O seguinte comando usa um sinal de mais (+) para criar uma lista na qual todos os números são adicionados:

seq -s + 5

Escrevemos o seguinte para canalizar isso para bc e navegar na lista:

seq -s + 5 | ac

Crie arquivos com seq

a touch comando atualizar carimbos de data e hora em arquivos. Se o arquivo não existe, toque criá-lo. Podemos usar a expansão da linha de comando com touch e seq para crear una colección de archivos con nombres temáticos pero numerados de manera distinto.

Crearemos un conjunto de 10 archivos con el mismo nombre base y un número distinto (archivo-1.txt, archivo-2.txt, etc.). Nós escrevemos o seguinte:

tocar $(seq -f "file-%g.txt" 1 10)

Subseqüentemente, escribimos lo siguiente para verificar los archivos:

ls file*

Usando seq en Bash Loops

Podemos usar seq en scripts Bash para controlar bucles con decimales.

Escriba el siguiente texto en un editor y posteriormente guárdelo comoloops.sh”:

#!/bin/bash

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

  echo "The value is now: $val"

feito

A seguir, nós escrevemos o seguinte para que nosso novo script seja executável:

chmod + x loop.sh

Quando executamos o script, o contador de loop é impresso na janela do terminal. Subseqüentemente, podemos escrever o seguinte para ver que o contador do loop decimal aumenta a cada iteração do loop:

./loop.sh

Lembre se seq você também pode fazer uma contagem regressiva; você pode usar isso em loops da mesma maneira.

Bom e simples

Uma coisa sobre seq é que não há muita curva de aprendizado. Tem um refrescantemente curto man página, mas você ainda pode usá-lo de maneiras interessantes.

Porque muitas vezes precisamos criar rapidamente arquivos de teste com tamanhos realistas, nós usamos seq com uma string de formato. Mais tarde, redirecionamos a saída para criar um arquivo que contém quantas linhas de dados fictícios quisermos.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.