любой способ сделать эту команду цепочка короче или лучше

Использовать расширение параметра усечение.

case "$filename" in
  *\(*.*\)*)
    before_first_parenthesis=${filename%%\(*}
    after_first_parenthesis=${filename#*\(}
    before_dot=${after_first_parenthesis%%.*}
    echo "$before_first_parenthesis" "$before_dot"
  *) echo "does not match the format";;
esac

2
09.10.2019, 19:12
1 ответ

Использование одной команды awk:

awk -F' - |\"' 'tolower($7) ~ /bot|crawler/ && tolower($7) !~ /google|yahoo|bing|msn|ask|aol|duckduckgo/{system("sudo ufw deny from "$1" to any")}' access.log

Это отфильтрует только те записи, которые имеют botили crawlerв 7-м столбце (, что делает ваша первая команда grep. Только если 7-й столбец не содержитgoogle|yahoo|bing|msn|ask|aol|duckduckgo(то, что делает ваша вторая grepкоманда ). В любой соответствующей строке будет выполнено sudo ufw deny from "$1" to anyв первом столбце. (Что делает ваша последняя awkкоманда ).

3
27.01.2020, 22:02

Теги

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