如何在多个定界字段之间获取值

时间:2019-05-10 14:11:28

标签: linux awk sed

我正在从文件数据的每一行中提取主机名和IP地址,将从cn=mykosts001mykosts001和IP地址ipHostNumber=192.168.18.118即{{ 1}}。

下面是包含数据的文件。

192.168.18.118

编辑:

$ cat hosts.tx
dn: cn=mykosts001+ipHostNumber=192.168.18.118,ou=hosts,ou=corp,ou=services,o=rocks.com

dn: cn=mykosts002+ipHostNumber=192.168.18.119,ou=hosts,ou=corp,ou=services,o=rocks.com

dn: cn=mykosts003+ipHostNumber=192.168.18.120,ou=hosts,ou=corp,ou=services,o=rocks.com

dn: cn=mykosts004+ipHostNumber=192.168.18.121,ou=hosts,ou=corp,ou=services,o=rocks.com

对于上面编辑的行,在这种情况下,当dn: cn=mykosts005+ipHostNumber=192.168.18.122,ou=hosts,ou=corp,ou=services, o=rocks.com 移到另一行时,它也会在o=rocks.com之后打印rocks.com

我尝试过的事情:

=

我在上面尝试过,但不知道仅获取主机名和IP。

所需的输出:

$ cat hosts.tx | sed '/^$/d' | cut -d"=" -f2-3
mykosts001+ipHostNumber=192.168.18.118,ou
mykosts002+ipHostNumber=192.168.18.119,ou
mykosts003+ipHostNumber=192.168.18.120,ou
mykosts004+ipHostNumber=192.168.18.121,ou

1 个答案:

答案 0 :(得分:2)

$ awk -F'[=+,]' '/^dn:/{print $2, $4}' file
mykosts001 192.168.18.118
mykosts002 192.168.18.119
mykosts003 192.168.18.120
mykosts004 192.168.18.121