Разделение файла на две переменные для передачи одной команде

Решением в моем случае было закомментировать следующие строки из файла /etc/httpd/conf.d/nss.conf:

#LoadModule nss_module modules/libmodnss.so
#Listen 8443 

запуск службы httpd и снова работает! Спасибо за все!

2
05.09.2019, 16:28
3 ответа

Вы можете использовать xargsи запустить небольшой сценарий оболочки:

jq -r '.href,.filename' file.json | xargs -n2 sh -c 'wget "$1" -O "$2"' sh

Обратите внимание, что опция wgetдля -oпредназначена для файла журнала, а -O— для «выходного документа».

3
27.01.2020, 21:58

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

parallel -n2 wget {1} -O {2} ::: "$(jq -r '.href,.filename' file.json)"
1
27.01.2020, 21:58

Я не знаю о разделителе jq -в Linux, но вы можете использовать sed для разделения полей, чтения вывода в переменные, а затем запустить wget после этого.

$> read HREF FILENAME < <(sed -r 's/(.*href:[ ]*)([^, ]*)(.*filename:[ ]*)([^, ]*)(.*)$/\2 \4/' files.json);wget "${HREF}" -o "${FILENAME}.pdf"

sedиспользует параметр -rдля включения регулярных выражений, создания групп захвата для анализа всего до href, а затем получает его значение. Затем захватывает все до имени файла и получает его значение. печать разделенных пробелами выходных данных групп захвата 1 и 4.

Значения считываются в HREFи FILENAME, затем двоеточие с запятой -запускает отдельную команду для запуска wget с сохраненными значениями.

0
27.01.2020, 21:58

Теги

Похожие вопросы