Что самый эффективный путь к grep для двух абсолютно отдельных вещей, и присвойте значения отдельным переменным?

Обычно это - a bash сценарий, куда Вы помещаете архив своих файлов в конце файла. Вы добавляете md5 хешируйте, чтобы проверить, был ли файл загружен правильно, и добавьте некоторые операции в начале файла для развертывания архива.

Править: пример с программой uudecode.

8
04.03.2014, 04:20
2 ответа

1. Grepping into 1 variable

Попробуйте следующее:

foo1=$(curl https://domain.com/file.xml | grep -E "string1|string2")

Это запустит curl 1 раз и grep для вхождений string1 или string2 .

2. Grepping into 2 переменных

Если это разные переменные, немного измените тактику. Захватите вывод curl , а затем grep .

output=$(curl https://domain.com/file.xml)
foo1=$(echo "$output" | grep "string1")
foo2=$(echo "$output" | grep "string2")

3. Grepping into the array

Вы также можете сохранить результаты в массиве вместо отдельных переменных.

output=$(curl https://domain.com/file.xml)
readarray foo < <(echo "$output" | grep "string1|string2")

С этим немного сложно справиться, если ваши результаты из grep могут не возвращать результаты, поскольку результаты из «string2» могут быть первым или вторым элементом в массиве, но я предоставляю его здесь так же, как демонстрация подхода.

4. Чтение в vars из grep

Еще один метод, который использует команду read вместе с подстановкой процесса ( <(..cmd ..) ).

$ read -d"\n" foo1 foo2 \
   <(curl https://domain.com/file.xml | grep -E "string1|string2")

Это снова может быть сложно, если поиск «строка1» ничего не возвращает, в результате чего любые совпадения для «строка2» отображаются в $ foo1 . Кроме того, этот подход имеет тенденцию быть менее переносимым, чем подход №2 или №3, описанный выше.

10
27.01.2020, 20:10
read var1 var2 <<CURLSED
$(curl $url | sed -nr 's/(regx1)\|(regx2)/"\1"'"$IFS"'"\2"/p')
CURLSED

А если серьезно, парень, есть миллион способов снять шкуру с этой кошки.

3
27.01.2020, 20:10

Теги

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