linux - 如何仅匹配主机文件中的前两个主机

标签 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

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

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

最佳答案

从命令行使用 perl,

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

输出

192.9.200.12 Solaris1
192.9.200.13 Solaris2
192.9.200.17 linux1
192.9.200.18 linux2

关于linux - 如何仅匹配主机文件中的前两个主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27353808/

相关文章:

python - 如何定期检查程序中的当前日期?

java - linux 和 solaris 机器上的 jvm 之间的区别

Ruby:如何使我的程序陷入信号并从信号中正确退出?

c - pcap_set_buffer_size() 中的问题

Bash mkdir 和子文件夹

arrays - 将数组传递给函数名称冲突

linux - 在后台运行时 tee 命令不起作用

perl - 如何在 0 和 bigint 之间选择一个随机值?

regex - Perl - 变量插值和反冲(转义)如何在替换正则表达式中工作,特别是替换部分

linux - 如何杀死从 kill 或 kill -9 脚本启动的进程产生的所有子进程