shell查找某个字符串所在行,之前离它最近的一行含有[]的内容输出

比如:[FetionSVN:/Fetion_HD_Document]@Fetion_HD_Document_g=rw@admin_g=rw通过查找@admin_g,来得到... 比如:
[FetionSVN:/Fetion_HD_Document]
@Fetion_HD_Document_g = rw
@admin_g = rw
通过查找@admin_g,来得到FetionSVN:/Fetion_HD_Document
shell如何写?
展开
 我来答
czwan2007
推荐于2017-09-04 · TA获得超过3957个赞
知道大有可为答主
回答量:1834
采纳率:57%
帮助的人:662万
展开全部
#!/bin/bash

NF=$(cat c.txt|wc  -l)
count=0

while [ $count -lt $NF ]
do
        if [ $(cat c.txt |grep -C $count "@admin_g" |grep "\[.*\]") ];then
                cat c.txt |grep -C $count "@admin_g" |grep "\[.*\]"
                break
        fi
        count=`expr $count + 1`
done


这里根据自己需求修改,我这里是查看c.txt  通过查找 admin_g 来查找最近的[ ]内容  

追问
报错,说If那行参数太多,老兄能简单解释下不?
cat c.txt |grep -C $count "@admin_g" |grep "\[.*\]"
这行是什么意思?输出什么?感觉这行有点问题呢,谢谢!
追答

第一张是shell小脚本,第二张是一个需要查询的文件,第三张是执行结果




cat c.txt |grep -C $count "@admin_g" |grep "\[.*\]"

这句话的意思是:查看c.txt 过滤 admin_g  -C 是指示前后多少张,这里定义一个变量。再从前后行中查找[]符号\是转义 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式