Experimente:
#!/usr/bin/gawk -f
BEGIN {
RS = "</VirtualHost>\n"
}
{
prefix = gensub("*:([^>]*)>", "\1", "1", $2)
filename = prefix "_" $4 ".conf"
print "Listen " prefix "\n" $0 "\n" RS > filename
}
Salve em um arquivo chamado, talvez, "httpdsplit" e faça:
$ chmod u+x httpdsplit
$ ./httpdsplit httpd.conf