Parsing 解析apache文件grep awk

Parsing 解析apache文件grep awk,parsing,awk,sed,Parsing,Awk,Sed,我试图做一个简单的脚本任务,但我在AWK方面的知识非常缺乏,我不能确切地理解如何完成这个愚蠢的任务 基本上我有一个非常大的vhost.conf,有数百个域 其思想就是迭代或解析这个唯一的文件,并获得ServerName和DocumentRoot的列表 该文件分为多个部分。如果我运行此命令,会得到如下输出: grep -E "DocumentRoot|ServerName" /etc/httpd/conf.d/vhost-pro.conf | awk '!/#/{print $2}' /home/

我试图做一个简单的脚本任务,但我在AWK方面的知识非常缺乏,我不能确切地理解如何完成这个愚蠢的任务

基本上我有一个非常大的vhost.conf,有数百个域

其思想就是迭代或解析这个唯一的文件,并获得ServerName和DocumentRoot的列表

该文件分为多个部分。如果我运行此命令,会得到如下输出:

grep -E "DocumentRoot|ServerName" /etc/httpd/conf.d/vhost-pro.conf | awk '!/#/{print $2}'
/home/webs/t2m/PRO/default
t2m.net
/home/webs/uoc/PRO/default
uoc.com
所以…现在。如何处理此输出?如果我能够将路径和域名连接成一行,也许我可以存储在数组或文件中,然后一块一块地获取信息。但我就是不知道怎么做

有关于如何进行的线索或提示吗


谢谢

谢谢你的评论。我也会做公关指挥。我将分享我是如何做到这一点的。我很幸运找到了某种awk魔法。老实说,它起了作用,但我不知道我在做什么,这对我来说是不好的:P

我有这个输出:

/home/webs/t2m/PRO/default
t2m.net
/home/webs/uoc/PRO/default
uoc.com
所以我把它变成了一行:

grep -E "DocumentRoot|ServerName" /etc/httpd/conf.d/vhost-pro.conf | awk '{key=$2;getline;print key " " $2}'
这样,我的新输出类似于:

/home/webs/t2m/PRO/default t2m.net
/home/webs/uoc/PRO/default uoc.com
然后,我想我会将其存储到一个临时文件中,然后进行迭代,并将其存储到一个var


谢谢

我建议如下:

awk '/<VirtualHost/ { sn=""; dr="" }
     /ServerName/ { sn=$2 }
     /DocumentRoot/ { dr = $2 }
     /\/VirtualHost/ { print dr, sn }' /etc/httpd/conf.d/vhost-pro.conf

awk'/请在代码标记中发布示例输入和预期的示例输出,可以帮助您完成相同的操作。添加输入文件的示例。。。为清晰起见,添加预期输出。。如果您只需要每两行连接一行,请使用
pr-2ats'
您也可以使用
xargs-l2
谢谢!如果一个别名有多个字符串,我问你如何解析可能是非常粗鲁的?。我正在尝试使用您的命令,但我只能获取ServerAlias中的第一个字符串:/嗯,我可以通过以下内部循环来完成:(我不知道这是否正确,但我将在这里发布:awk'/