Nano Hash - криптовалюты, майнинг, программирование

xargs для нескольких аргументов, каждый с двумя входами

У меня есть script.sh, это просто wget:

wget https://stuff/$1/$2/etc

По сути, мне нужно при каждом запуске сценария вводить два аргумента $1 и $2, и мне нужно делать это несколько раз (у меня есть сотни файлов для загрузки, которые следуют этому типу пути).

Я знаком с тем, как использовать xargs для чтения файла .txt и ввода каждой строки в аргумент, но я не уверен, как это сделать, когда каждая строка имеет 2 входа.

04.02.2021

Ответы:


1

Вызов вашего скрипта

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

Вы можете ограничить количество аргументов на команду, используя -n

xargs -n 2 yourWgetScript.sh < yourFile

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

xargs -L 1 yourWgetScript.sh < yourFile

Если ваш файл имеет форму

cmd1-arg1 cmd1-arg2
cmd2-arg1 cmd2-arg2
cmd3-arg1 cmd3-arg2
...

и нет завершающих пробелов, специальных символов и т. д., то эти две команды эквивалентны. Но имейте в виду, что у xargs есть свои механизмы экранирования. Если некоторые из аргументов содержат пробелы или \"', вы должны экранировать их, используя \.

Более эффективная альтернатива

Возможно, будет быстрее использовать следующий сценарий вместо xargs yourWgetScript, так как последний многократно запускает оболочку и процесс wget для каждого URL-адреса, что может быть очень медленным.

awk '{print "https://stuff/" $1 "/" $2 "/etc"}' yourFile | xargs wget
05.02.2021
  • Итак, в случае xargs -n 2 у меня будет файл $1 в первой строке, $2 во второй строке, $1 в третьей строке, $2 в четвертой и так далее, верно? В то время как с -L 1 я могу поместить $1 и $2 в одну строку. Как будет выглядеть мой файл при использовании awk? 05.02.2021
  • С -n 2 вы можете иметь $1 и $2 в разных строках, но это не обязательно. Было бы даже хорошо иметь одну строку с тысячами аргументов; или одна строка с одним аргументом, затем одна строка с двумя аргументами, затем одна строка с тремя аргументами и так далее. ¶ Для -L 1 и awk аргументы $1 и $2 должны всегда находиться в одной строке. Для этих двух решений в каждой строке требуется ровно два аргумента. 05.02.2021
  • Новые материалы

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

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

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

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..