shell 判断文件内容是否包含几行配置信息?如果没有,在指定行下添加内容

举例my.cnf查找文件是否包含如下内容:A=1B='C'D=abcd如果没有找到上述内容,则在[mysqld]行下添加上述内容新手求大神赐教... 举例 my.cnf
查找文件是否包含如下内容:
A=1
B='C'
D=abcd
如果没有找到上述内容,则在[mysqld]行下添加上述内容
新手求大神赐教
展开
 我来答
videlord
2014-01-13 · TA获得超过1336个赞
知道大有可为答主
回答量:1518
采纳率:66%
帮助的人:434万
展开全部
假设你是一个个string找,然后没找到就添加:
#!/bin/sh

if grep -Fxq "A=1" my.cnf
then
echo "A=1 found"
else
sed -i '/\[mysqld\]/a A=1' my.cnf
fi
if grep -Fxq "B=‘C’" my.cnf
then
echo "B=‘C’ found"
else
sed -i '/\[mysqld\]/a B=‘C’' my.cnf
fi
if grep -Fxq "D=abcd" my.cnf
then
echo "D=abcd found"
else
sed -i '/\[mysqld\]/a D=abcd' my.cnf
fi
追问
可以一起找么,我就是嫌一个个STRING太麻烦
追答
所谓的一起找,那就是三个都找到,才满足条件
你的要求如果是找一个加一个,就是这么做

如果是都找不到才加,那就是一起找,例子:
#!/bin/sh

t=0
while read -r line; do
case $line in
*"A=1"*)
t=$(expr $t + 1);;
*"B='C'"*)
t=$(expr $t + 1);;
*"D=abcd"*)
t=$(expr $t + 1);;
esac
done < my.cnf
if [ $t -eq 3 ] ; then
sed -i '/\[mysqld\]/a 你要加的行' my.cnf
fi
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QICHUAN_ZHANG
2014-01-13 · TA获得超过199个赞
知道小有建树答主
回答量:1646
采纳率:0%
帮助的人:552万
展开全部
可以的, 使用正则来实现。发下私信过来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式