使用grep/awk从文件中提取服务器名称

使用grep/awk从文件中提取服务器名称,awk,grep,Awk,Grep,我有一个文件,其中有以下模式的多行- 服务器文件- permit from www.hadooptest.abc.net to www.ha1.abc.net:80/TCP, 443/TCP permit from www.hadooptest.abc.net to www.apz2.abc.net:443/TCP permit from www.hadooptest.abc.net to www.aln.abc.net, www.klm.abc.net:80/TCP, 443/TCP

我有一个文件,其中有以下模式的多行-

服务器文件-

permit from www.hadooptest.abc.net to www.ha1.abc.net:80/TCP, 443/TCP

permit from www.hadooptest.abc.net to www.apz2.abc.net:443/TCP

permit from www.hadooptest.abc.net to www.aln.abc.net, www.klm.abc.net:80/TCP, 443/TCP 
我想拿出一个脚本来提取文件中的所有服务器名称。我已经尝试了grep和awk的多次迭代,但到目前为止还没有找到一种只提取服务器名称的方法。例如,“grep-o'to.*abc.net'Serverfile”给我以下输出-

$ grep -o ' to.*abc.net' Serverfile 
 to www.ha1.abc.net
 to www.apz2.abc.net
 to www.aln.abc.net, www.klm.abc.net
我不能在脚本中使用它,因为没有提取单个服务器名称,而且还有一些行具有多个服务器名称,如最后一行的www.aln.abc.net和www.klm.abc.net


谢谢

好的。。。我可能已经找到了答案:)-


您的grep解决方案很好,但会返回两个结果:

$ grep -o '[A-Za-z0-9_\.-]*.abc.net'  <<<"permit from www.hadooptest.abc.net to www.ha1.abc.net:80/TCP, 443/TCP"
www.hadooptest.abc.net   #You don't want this one
www.ha1.abc.net
或者干脆
$sed-r's/(.*to)(www[.].*.abc.net)(.*)/\2/g'


只需更换部件
有什么问题,以避免输出中的左
“到”
子字符串?谢谢!这更像是埃尔甘特@欢迎使用168115。如果您对这些解决方案感到满意,您可以单击绿色勾号将其作为答案接受。
$ grep -o '[A-Za-z0-9_\.-]*.abc.net'  <<<"permit from www.hadooptest.abc.net to www.ha1.abc.net:80/TCP, 443/TCP"
www.hadooptest.abc.net   #You don't want this one
www.ha1.abc.net
$ grep -Po 'to \K[A-Za-z0-9_\.-]*.abc.net'  <<<"permit from www.hadooptest.abc.net to www.ha1.abc.net:80/TCP, 443/TCP"
www.ha1.abc.net
$ sed -r 's/(.*to )([A-Za-z0-9_\.-]*.abc.net)(.*)/\2/g'  <<<"permit from www.hadooptest.abc.net to www.ha1.abc.net:80/TCP, 443/TCP"
www.ha1.abc.net