Как использовать команду seq в Linux

Команда Linux seq создает списки чисел в мгновение ока. Но как применить эту функциональность на практике? Мы покажем вам, как seq может вам пригодиться.

Команда seq

На первый взгляд, команда Linux seq может показаться странной. Это позволяет генерировать последовательности чисел быстро и все! Однако ключевое слово здесь — «быстро». Через мгновение вы увидите, насколько быстро может работать эта маленькая команда.

Однако, независимо от того, как они генерируются, насколько полезен список чисел? Команда seq была добавлена ​​в 8-е издание Unix в 1985 году. С тех пор она существует, поэтому она должна делать что-то стоящее.

В философия Unix в том, что он полон маленьких утилит, которые делают одно и делают это хорошо. Один из центральных принципов этой философии — писать программы, принимающие ввод от других программ. Конечно, это также означает, что эти программы должны генерировать выходные данные, которые могут использоваться в качестве входных для других программ.

Команда seq становится самостоятельной, когда она используется с другими командами, которые используют ее вывод, либо через каналы, либо через расширение командной строки.

Генерация базового списка

Если вы запускаете seq с одним числом в качестве параметра командной строки, он считается от единицы до этого числа. Затем он печатает числа в окне терминала, по одному числу в строке, как показано ниже:

seq 6

В

Если вы введете два числа в командной строке, первое будет начальным числом, а второе будет конечным числом, как показано ниже:

seq 4 10

seq 4 10 в окне терминала.

Вы можете установить размер шага, включив третье число. Он находится между начальным и конечным числами. Мы вводим следующее, чтобы попросить seq создать список чисел, который начинается с шести, заканчивается на 48 и использует шаг из шести:

seq 6 6 48

seq 6 6 48 в окне терминала.

Обратный отсчет

Мы также можем попросить seq создать список чисел от самого высокого до самого низкого. Однако для этого мы должны предоставить отрицательный шаг.

  Как использовать SLSK для резервного копирования сохраненных игр Steam в Linux

Следующая команда создает список, который насчитывает от 24 до 12 с шагом 6, потому что мы вводим шаг как отрицательное число:

seq 24 -6 12

seq 24-6 12 в окне терминала.

Счет с десятичными знаками

Номера начала, конца и шага также могут быть десятичными. Если какое-либо из чисел является десятичным, остальные также рассматриваются как десятичные. Следующая команда генерирует список чисел с шагом 0,2:

seq 1 0.2 2

seq 1 0,2 2 в окне терминала.

Скорость следования

seq невероятно быстр — единственное узкое место — это время, необходимое для ввода команды в окне терминала. Чтобы проверить его скорость, давайте попросим список из 250 000 номеров.

Мы вводим следующее, используя время команда, чтобы узнать, сколько времени занимает процесс:

time seq 250000

time seq 250000 в окне терминала.

Результаты отображаются под списком. Даже на нашем тестовом ПК с умеренной мощностью seq удивительно быстро.

Результаты синхронизации для команды seq 250000 в окне терминала.

Весь список был создан и выведен на экран примерно за 1/3 секунды. Если мы перенаправим список в файл, мы даже сможем избежать накладных расходов на ввод текста в окне терминала.

Для этого мы набираем следующее:

time seq 250000 > numbers.txt

time seq 250000> numbers.txt в окне терминала ».  width = ”646 ″ height =” 147 ″ onload = ”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);»  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Время, необходимое для заполнения списка и создания файла, теперь составляет около 1/7 секунды. < / p> </p>
<div style=

Использование разделителя

Символ новой строки — это символ по умолчанию, отображаемый между каждым числом в списке. Вот почему они отображаются в виде вертикального списка, в котором каждое число находится в отдельной строке. При необходимости вы можете предоставить другой разделитель.

Например, предположим, что вам нужно создать список с разделителями-запятыми, список, разделенный двоеточиями, или любой другой знак препинания или символ. Разделитель на самом деле является строкой, поэтому вы можете использовать более одного символа.

Мы будем использовать параметр -s (разделитель). Следующая команда создаст список с разделителями-запятыми:

seq s, 6 6 36

Эта команда будет использовать двоеточие (:) в качестве разделителя:

seq -s: 6 6 36

Эта команда указывает seq использовать два дефиса (-) в качестве разделителя:

seq -s-- 6 6 36

seq s, 6 6 36 в окне терминала.

Использование строк формата

Команда seq также поддерживает Стиль языка C форматировать строки. Это позволяет вам форматировать вывод с гораздо большим контролем, чем просто указание разделителя. Чтобы использовать строку формата, используйте параметр -f (формат).

Следующая команда указывает seq использовать нули для дополнения вывода до двух символов:

seq -f "%02g" 6

seq -f

Мы можем отформатировать строку любым текстом, который нам нравится, и разместить число в любом месте строки следующим образом:

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

seq -f

Быстрый способ установить нулевое заполнение

Самый быстрый способ установить нулевое заполнение — использовать параметр -w (равная ширина). Это указывает seq использовать нули для дополнения чисел, так что все они имеют одинаковую ширину с наибольшим числом.

Следующая команда считает от 0 до 1000 с шагом 100, и все числа будут дополнены нулями:

seq -w 0 100 1000

seq -w 0 100 1000 в окне терминала.

Самый длинный номер занимает четыре символа, поэтому все более узкие числа дополняются нулями до этой ширины (даже 0 дополняется до четырех нулей).

  Как установить Bither в Linux

Piping seq Into bc

Установив разделитель как математический символ и вставив список в команду bc, мы можем оцените числа в этом списке.

Следующая команда создает список чисел, разделенных звездочками.

seq -s* 6

начиная с одного и заканчивая шестью:

seq -s* 6 | bc

Если мы загрузим этот список в bc, он оценит список с помощью звездочек

seq -s+ 5

как символы умножения:

seq -s+ 5 | bc

Мы можем сделать это и с другими символами.  В приведенной ниже команде используется знак плюса (+) для создания списка, в который добавляются все числа:

Мы вводим следующее, чтобы передать это в bc и оценить список:

seq -s * 6 в окне терминала. Создание файлов с помощью seq Сенсорная команда

обновляет отметки времени и даты

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

по файлам. Если файл не существует, коснитесь его. Мы можем использовать расширение командной строки с помощью touch и seq, чтобы создать коллекцию файлов с тематическими именами, но с разными номерами.

ls file*

Мы создадим набор из 10 файлов с одинаковым базовым именем и другим номером (file-1.txt, file-2.txt и т. Д.).  Набираем следующее:

Затем мы вводим следующее, чтобы проверить файлы:

коснитесь $ (seq -f

Использование seq в циклах Bash

#!/bin/bash

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

  echo "The value is now: $val"

done

Мы можем использовать seq в сценариях Bash для управления циклами с десятичными знаками.

chmod +x loop.sh

Введите следующий текст в редактор и сохраните его как «loops.sh»:

Затем мы вводим следующее, чтобы сделать наш новый скрипт исполняемым:

./loop.sh

chmod + x loop.sh в окне терминала.

Когда мы запускаем скрипт, счетчик цикла печатается в окне терминала. Затем мы можем ввести следующее, чтобы увидеть, как счетчик десятичного цикла увеличивается с каждой итерацией цикла:

./loop.sh в окне терминала.

Помните, что seq также может вести обратный отсчет; вы можете использовать это в циклах таким же образом. Красиво и просто Одна вещь о seq — это не так уж и много обучения. Оно имеет

освежающе короткий

справочную страницу, но вы все равно можете использовать ее в интересных целях.

Поскольку нам часто нужно быстро создавать тестовые файлы с реалистичными размерами, мы используем seq со строкой формата. Затем мы перенаправляем вывод для создания файла, содержащего столько строк фиктивных данных, сколько мы хотим.