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

比如:
[FetionSVN:/Fetion_HD_Document]
@Fetion_HD_Document_g = rw
@admin_g = rw
通过查找@admin_g,来得到FetionSVN:/Fetion_HD_Document
shell如何写?

#!/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 是指示前后多少张,这里定义一个变量。再从前后行中查找[]符号\是转义 

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网