Oneliner для вывода в файл, только если строка Соответствует (Bash)?

MariaDB - это форк MySQL. RedHat Enterprise Linux и его производные перешли на MariaDB от MySQL. Поэтому вы можете установить mariadb-server на CentOS7, используя эту команду yum install mariadb-server mariadb. Вот хорошее пошаговое руководство, как это сделать в п.8 Install MariaDB Database или вы можете использовать этот источник для этого Mariadb step by step

-1
12.01.2019, 22:33
2 ответа

Просто сохраните его в файл и удалите, если он не включает этот тег:

curl "http://example.com/$1" >"$1"
! grep -qF '<head>' "$1" && rm "$1"

Или, если хотите немного усложнить,

if curl "http://example.com/$1" | tee "$1" | ! grep -qF '<head>'
then
    rm "$1"
fi

Или сначала выполните все извлечение, затем просмотрите полученные файлы и удалите их,

mkdir outdir  # assuming this is not pre-existing

# iterates over all positional parameters
for path do
    curl "http://example.com/$path" >outdir/"$path"
done

find outdir -type f ! -exec grep -qF '<head>' {} \; -delete

Но это будет работать, только если вы хотите получить, например. все известные файлы по фиксированному пути.

1
28.01.2020, 05:08

Просто так:

curl "http://example.com/$1" | tee temp | grep -q derp && cat temp; rm temp

Сохраняет вывод curl в файл и направляет вывод в grep, который затем ищет derpв выводе и, если он найден, выводит содержимое команды curl на стандартный вывод, если derpне найден, вывод сценария отсутствует.. Затем временный файл удаляется.

Не уверен, что вы можете сделать это без «буферизации» в файл, так как bashне имеет способа условно буферизовать вывод команды.

0
28.01.2020, 05:08

Теги

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