如何只匹配主机文件中的两个第一台主机

mai*_*ash 3 linux bash perl awk sed

使用以下egrep命令,我从/ etc/hosts文件中获取主机,如下例所示

egrep "Solaris|linux|unix|vms|win|proxy|terminal|unixware" /etc/hosts

192.9.200.12 Solaris1
192.9.200.13 Solaris2
192.9.200.14 Solaris3
192.9.200.15 Solaris4
192.9.200.16 Solaris5
192.9.200.17 linux1
192.9.200.18 linux2
192.9.200.19 linux3 
192.9.200.20 linux4
192.9.200.21 linux5
Run Code Online (Sandbox Code Playgroud)

我想要的是添加awk或sed或perl one liner命令,它将仅打印两个第一个匹配主机,如下所示

egrep "Solaris|linux|unix|vms|win|proxy|terminal|unixware" | ...... /etc/hosts

192.9.200.12 Solaris1
192.9.200.13 Solaris2
192.9.200.17 linux1
192.9.200.18 linux2
Run Code Online (Sandbox Code Playgroud)

Сух*_*й27 9

从命令行使用perl,

perl -ne'
  print if /(Solaris|linux|unix|vms|win|proxy|terminal|unixware)/ && ++$s{$1}<=2;
' /etc/hosts
Run Code Online (Sandbox Code Playgroud)

产量

192.9.200.12 Solaris1
192.9.200.13 Solaris2
192.9.200.17 linux1
192.9.200.18 linux2
Run Code Online (Sandbox Code Playgroud)