shell脚本模式匹配

时间:2014-06-07 14:20:48

标签: bash shell

需要有关shell脚本的帮助。

我在文件中有以下结果

name-label ( RW)    : host1
      networks (MRO): 1/ip: 192.168.1.2; 0/ip: 192.168.1.10

name-label ( RW)    : host2
      networks (MRO): 1/ip: 192.168.1.15; 1/ipv6/0: fe80::9060:b6ff:fec1:7bbb; 0/ip: 192.168.1.20; 0/ipv6/0: fe80::286d:7cff:fefe:3ed7

我只需要文件中的主机名和相应的0 / ip值。最终输出将是

host1 192.168.1.10
host2 192.168.1.20

2 个答案:

答案 0 :(得分:0)

Perl解决方案:

perl -ne '/^name-label .*: (.+)/ and $name = $1; m(0/ip: ([0-9.]+)) and print "$name $1\n"'

名称标签存储在变量中,在处理下一行时用IP打印。

答案 1 :(得分:-1)

#!/bin/bash
 grep  ") :" FILENAME |   sed 's/.*) ://' | sed 's/networks.*ip://' | sed 's/;.*//'

FILENAME是您的文件。