我正在尝试收集与我的apache配置文件的ServerName指令不匹配的别名列表。这是我用来生成输出的语法。
apachectl -S | cut -d" " -f12,13,18,19 | sed -e 's/namevhost //;/.conf/d;/^$/d;/^127/d;/is$/d' | uniq
这是我的输出,由前面的命令"管道"生成。
logwatch-jgpihole.com
alias www.logwatch-jgpihole.com
jgpihole.com
alias jgpihole.local
alias piholeadmin.com
jgrantham.ddns.net
我试图实现的输出如下所示。
logwatch-jgpihole.com
jgpihole.com
alias jgpihole.local
alias piholeadmin.com
jgrantham.ddns.net
任何这方面的帮助将不胜感激。
显而易见的解决方案是将输出通过管道传输到
grep -v 'alias www.'
cut
、sed
和grep
的混乱通常表明您应该改用 Awk 来看待。
apachectl -S |
awk '{ a = $12 OFS $13 OFS $18 OFS $19
gsub(/namevhost /, "", a)
if (a !~ /.conf|^$|^127|is$|alias www./ && !b[a]++)
print a }'
这也有点纠结,因为我不知道你的apachectl
输出是什么样的;可能很多事情都可以通过一些上下文来更容易理解和更新。