我有一个这样的文件:
multipath {  
wwid 3600507630bffc5e10000000000001048  
alias mpath3  
path_grouping_policy failover  
}  我想搜索mpath3,然后输出它上面的wwid行。我需要它只输出我搜索的mpath的wwid。目前,它返回mpath3和mpath 34和35的值。
i=mpath3
sed ":a;s/\n/&/2;tb;$!{N;ba};:b;/$i/!D;" /etc/multipath.conf)输出:
multipath { wwid 3600507630bffc5e10000000000001118 alias mpath3 multipath { wwid 3600507630bffc5e10000000000001047 alias mpath34 multipath { wwid 3600507630bffc5e10000000000001048 alias mpath35 } }发布于 2014-02-06 21:35:00
只需使用grep就可以解决这个问题( -B标志允许您在匹配之前提取上下文行):
grep -B1 "mpath3$" /etc/multipath.conf注您需要$来排除mpath34和其他结果。
发布于 2014-02-06 21:38:17
您可以使用边界标记\b
sed ':a;s/\n/&/2;tb;$!{N;ba};:b;/\b'"$i"'\b/!D;' /etc/multipath.conf发布于 2014-02-07 03:00:55
awk '/mpath3/{print wwid} {wwid=$2}' filehttps://stackoverflow.com/questions/21604441
复制相似问题