Команда Linux seq создает списки чисел в мгновение ока. Но как применить эту функциональность на практике? Мы покажем вам, как seq может вам пригодиться.
Оглавление
Команда seq
На первый взгляд, команда Linux seq может показаться странной. Это позволяет генерировать последовательности чисел быстро и все! Однако ключевое слово здесь — «быстро». Через мгновение вы увидите, насколько быстро может работать эта маленькая команда.
Однако, независимо от того, как они генерируются, насколько полезен список чисел? Команда seq была добавлена в 8-е издание Unix в 1985 году. С тех пор она существует, поэтому она должна делать что-то стоящее.
В философия Unix в том, что он полон маленьких утилит, которые делают одно и делают это хорошо. Один из центральных принципов этой философии — писать программы, принимающие ввод от других программ. Конечно, это также означает, что эти программы должны генерировать выходные данные, которые могут использоваться в качестве входных для других программ.
Команда seq становится самостоятельной, когда она используется с другими командами, которые используют ее вывод, либо через каналы, либо через расширение командной строки.
Генерация базового списка
Если вы запускаете seq с одним числом в качестве параметра командной строки, он считается от единицы до этого числа. Затем он печатает числа в окне терминала, по одному числу в строке, как показано ниже:
seq 6
Если вы введете два числа в командной строке, первое будет начальным числом, а второе будет конечным числом, как показано ниже:
seq 4 10
Вы можете установить размер шага, включив третье число. Он находится между начальным и конечным числами. Мы вводим следующее, чтобы попросить seq создать список чисел, который начинается с шести, заканчивается на 48 и использует шаг из шести:
seq 6 6 48
Обратный отсчет
Мы также можем попросить seq создать список чисел от самого высокого до самого низкого. Однако для этого мы должны предоставить отрицательный шаг.
Следующая команда создает список, который насчитывает от 24 до 12 с шагом 6, потому что мы вводим шаг как отрицательное число:
seq 24 -6 12
Счет с десятичными знаками
Номера начала, конца и шага также могут быть десятичными. Если какое-либо из чисел является десятичным, остальные также рассматриваются как десятичные. Следующая команда генерирует список чисел с шагом 0,2:
seq 1 0.2 2
Скорость следования
seq невероятно быстр — единственное узкое место — это время, необходимое для ввода команды в окне терминала. Чтобы проверить его скорость, давайте попросим список из 250 000 номеров.
Мы вводим следующее, используя время команда, чтобы узнать, сколько времени занимает процесс:
time seq 250000
Результаты отображаются под списком. Даже на нашем тестовом ПК с умеренной мощностью seq удивительно быстро.
Весь список был создан и выведен на экран примерно за 1/3 секунды. Если мы перенаправим список в файл, мы даже сможем избежать накладных расходов на ввод текста в окне терминала.
Для этого мы набираем следующее:
time seq 250000 > numbers.txt
Символ новой строки — это символ по умолчанию, отображаемый между каждым числом в списке. Вот почему они отображаются в виде вертикального списка, в котором каждое число находится в отдельной строке. При необходимости вы можете предоставить другой разделитель.
Например, предположим, что вам нужно создать список с разделителями-запятыми, список, разделенный двоеточиями, или любой другой знак препинания или символ. Разделитель на самом деле является строкой, поэтому вы можете использовать более одного символа.
Мы будем использовать параметр -s (разделитель). Следующая команда создаст список с разделителями-запятыми:
seq s, 6 6 36
Эта команда будет использовать двоеточие (:) в качестве разделителя:
seq -s: 6 6 36
Эта команда указывает seq использовать два дефиса (-) в качестве разделителя:
seq -s-- 6 6 36
Использование строк формата
Команда seq также поддерживает Стиль языка C форматировать строки. Это позволяет вам форматировать вывод с гораздо большим контролем, чем просто указание разделителя. Чтобы использовать строку формата, используйте параметр -f (формат).
Следующая команда указывает seq использовать нули для дополнения вывода до двух символов:
seq -f "%02g" 6
Мы можем отформатировать строку любым текстом, который нам нравится, и разместить число в любом месте строки следующим образом:
seq -f "Number %02g in a C-like format string" 6
Быстрый способ установить нулевое заполнение
Самый быстрый способ установить нулевое заполнение — использовать параметр -w (равная ширина). Это указывает seq использовать нули для дополнения чисел, так что все они имеют одинаковую ширину с наибольшим числом.
Следующая команда считает от 0 до 1000 с шагом 100, и все числа будут дополнены нулями:
seq -w 0 100 1000
Самый длинный номер занимает четыре символа, поэтому все более узкие числа дополняются нулями до этой ширины (даже 0 дополняется до четырех нулей).
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*
Затем мы вводим следующее, чтобы проверить файлы:
коснитесь $ (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
Затем мы вводим следующее, чтобы сделать наш новый скрипт исполняемым:
./loop.sh
Когда мы запускаем скрипт, счетчик цикла печатается в окне терминала. Затем мы можем ввести следующее, чтобы увидеть, как счетчик десятичного цикла увеличивается с каждой итерацией цикла:
./loop.sh в окне терминала.
Помните, что seq также может вести обратный отсчет; вы можете использовать это в циклах таким же образом. Красиво и просто Одна вещь о seq — это не так уж и много обучения. Оно имеет
освежающе короткий