首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在bash中,如何搜索变量并在其上方显示行

在bash中,如何搜索变量并在其上方显示行
EN

Stack Overflow用户
提问于 2014-02-06 21:32:12
回答 4查看 56关注 0票数 1

我有一个这样的文件:

代码语言:javascript
运行
复制
multipath {  
wwid 3600507630bffc5e10000000000001048  
alias mpath3  
path_grouping_policy failover  
}  

我想搜索mpath3,然后输出它上面的wwid行。我需要它只输出我搜索的mpath的wwid。目前,它返回mpath3和mpath 34和35的值。

代码语言:javascript
运行
复制
i=mpath3

sed ":a;s/\n/&/2;tb;$!{N;ba};:b;/$i/!D;" /etc/multipath.conf)

输出:

代码语言:javascript
运行
复制
multipath { wwid 3600507630bffc5e10000000000001118 alias mpath3 multipath { wwid 3600507630bffc5e10000000000001047 alias mpath34 multipath { wwid 3600507630bffc5e10000000000001048 alias mpath35 } }
EN

回答 4

Stack Overflow用户

发布于 2014-02-06 21:35:00

只需使用grep就可以解决这个问题( -B标志允许您在匹配之前提取上下文行):

代码语言:javascript
运行
复制
grep -B1 "mpath3$" /etc/multipath.conf

注您需要$来排除mpath34和其他结果。

票数 3
EN

Stack Overflow用户

发布于 2014-02-06 21:38:17

您可以使用边界标记\b

代码语言:javascript
运行
复制
sed ':a;s/\n/&/2;tb;$!{N;ba};:b;/\b'"$i"'\b/!D;' /etc/multipath.conf
票数 1
EN

Stack Overflow用户

发布于 2014-02-07 03:00:55

代码语言:javascript
运行
复制
awk '/mpath3/{print wwid} {wwid=$2}' file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21604441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档