У меня есть команда в сценарии удара как это, для получения меня массив всех доменов на моем веб-сервере.
domains=($(grep -rnw '/etc/nginx/sites-available/' -e 'server_name' -l | xargs grep -e 'server_name' | awk '{print $3}'))
Формат nginx файла сервера имеет строку имени сервера, снабженную префиксом вкладку, и затем server_name domain.tld;
Это хорошо работает, и я получаю список просто доменных имен назад, но только если www. префикс не определяется в строке имени сервера. В этом случае строка имени сервера была бы похожа server_name www.domain.tld domain.tld;
или server_name domain.tld www.domain.tld;
, оба приемлемые пути.
Q: В случае определяется www. префикс, я возвращаю то, что является первым в порядке. Есть ли способ, которым я мог проигнорировать www.domain.tld
часть от результатов, чтобы только возвратиться domain.tld
?
С GNU sed
можно попробовать это:
domains=$(grep -rwn "/etc/nginx/sites-available/" -e "server_name" | sed -E -e 's/ www\.\w+\.\w+//g')
printf "%s\n" "$domains"