Como usar o Comando seq no Linux


0

Um prompt de terminal em um PC Linux.
Fatmawati Achmad Zaenuri / Shutterstock

O Linux seq comando gera listas de números em um piscar de olhos. Mas como essa funcionalidade pode ser colocada em uso prático? Mostraremos como o seq pode ser útil para você.

O Comando seq

À primeira vista, o Linux seq comando parece ser algo estranho. Ele permite que você gere sequências de números rapidamente e é isso! A palavra-chave aqui, porém, é “rapidamente”. Em um momento, você verá o quão rápido esse pequeno comando pode ser executado.

Independentemente de como eles são gerados, porém, quão útil é uma lista de números? o seq command foi adicionado à 8ª edição do Unix em 1985. Ele está lá desde então, então deve fazer algo que valha a pena.

A filosofia do Unix é que ele está cheio de pequenos utilitários que fazem uma coisa e a fazem bem. Um dos princípios centrais desta filosofia é escrever programas que aceitem entradas de outros programas. Claro, isso também significa que esses programas devem gerar saídas que podem ser usadas como entradas por outros programas.

o seq O comando ganha destaque quando é usado com outros comandos que fazem uso de sua saída, seja por meio de canais ou expansão de linha de comando.

Geração de lista básica

Se você lançar seq com um único número como parâmetro de linha de comando, ele conta de um a esse número. Em seguida, ele imprime os números na janela do terminal, um número por linha, conforme mostrado abaixo:

seq 6

O comando "seq 6" em uma janela de terminal.

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, conforme mostrado abaixo:

seq 4 10

seq 4 10 em uma janela de terminal.

Você pode definir o tamanho do passo incluindo um terceiro número. Ele fica entre os números inicial e final. Nós digitamos o seguinte para perguntar seq para criar uma lista de números que começa com seis, termina em 48 e usa uma etapa de seis:

seq 6 6 48

seq 6 6 48 em uma janela de terminal.

Contando para trás

Também podemos pedir seq para criar uma lista de números do maior ao menor. Para fazer isso, no entanto, devemos fornecer uma etapa negativa.

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

seq 24 -6 12

seq 24 -6 12 em uma janela de terminal.

Contando com Decimais

Os números de início, fim e etapa também podem ser decimais. Se algum dos números for decimal, os outros também serã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

seq 1 0,2 2 em uma janela de terminal.

A velocidade de seq

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

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

time seq 250000

tempo seq 250000 em uma janela de terminal.

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

Resultados de temporização para o comando seq 250000 em uma janela de terminal.

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

Para fazer isso, digitamos o seguinte:

time seq 250000 > numbers.txt

time seq 250000> numbers.txt em uma janela de terminal.” width=”646″ height=”147″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>O tempo que leva para completar a lista e criar o arquivo agora é cerca de 1/7 de segundo.</p>
<h2 role=Usando um Separador

Um novo caractere de linha é o caractere padrão 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. Se necessário, você pode fornecer outro separador.

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

Vamos usar o -s opção (separador). O seguinte comando 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 para usar dois hifens (-) como separador:

seq -s-- 6 6 36

seq s, 6 6 36 em uma janela de terminal.

Usando strings de formato

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

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

seq -f "%02g" 6

seq -f "% 02g" 6 em uma janela de terminal.

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

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

seq -f "Número% 02g em uma string de formato semelhante ao C" 6 em uma janela de terminal.

Uma maneira rápida de definir o preenchimento de zero

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

O comando a seguir conta de 0 a 1.000 em etapas de 100, e todos os números serão preenchidos com zeros:

seq -w 0 100 1000

seq -w 0 100 1000 em uma janela de terminal.

O número mais longo leva quatro caracteres, portanto, todos os números mais estreitos são preenchidos com zeros nessa largura (mesmo 0 é preenchido com quatro zeros).

Tubulação seq para bc

Definindo o separador como um símbolo matemático e canalizando a lista para o bc comando, podemos avaliar os números dessa lista.

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

seq -s* 6

Se colocarmos essa lista em bc, ele avalia a lista usando os asteriscos (*) como símbolos de multiplicação:

seq -s* 6 | bc

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

seq -s+ 5

Nós digitamos o seguinte para canalizar isso para bc e avalie a lista:

seq -s+ 5 | bc

seq -s * 6 em uma janela de terminal.

Criando arquivos com seq

o touch comando atualiza carimbos de hora e data em arquivos. Se o arquivo não existir, toque em cria-o. Podemos usar a expansão da linha de comando com touch e seq para criar uma coleção de arquivos com nomes temáticos, mas com números diferentes.

Criaremos um conjunto de 10 arquivos com o mesmo nome de base e um número diferente (file-1.txt, file-2.txt e assim por diante). Nós digitamos o seguinte:

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

Em seguida, digitamos o seguinte para verificar os arquivos:

ls file*

toque em $ (seq -f "arquivo-% g.txt" 1 10) em uma janela de terminal.

Usando seq em Bash Loops

Podemos usar seq em scripts Bash para controlar loops com decimais.

Digite o seguinte texto em um editor e salve-o como “loops.sh”:

#!/bin/bash

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

  echo "The value is now: $val"

done

Em seguida, digitamos o seguinte para tornar nosso novo script executável:

chmod +x loop.sh

chmod + x loop.sh em uma janela de terminal.

Quando executamos o script, o contador de loop é impresso na janela do terminal. Podemos então digitar o seguinte para ver o contador de loop decimal aumentar a cada iteração do loop:

./loop.sh

./loop.sh em uma janela de terminal.

Lembre-se disso seq pode contar para trás também; 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 refrescante 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, usamos seq com uma string de formato. Em seguida, redirecionamos a saída para criar um arquivo contendo quantas linhas de dados fictícios quisermos.


Like it? Share with your friends!

0

What's Your Reaction?

hate hate
0
hate
confused confused
0
confused
fail fail
0
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
0
love
lol lol
0
lol
omg omg
0
omg
win win
0
win

0 Comments

Your email address will not be published. Required fields are marked *

Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Meme
Upload your own images to make custom memes
Video
Youtube, Vimeo or Vine Embeds
Audio
Soundcloud or Mixcloud Embeds
Image
Photo or GIF
Gif
GIF format