shell 判断文件内容是否包含几行配置信息?如果没有,在指定行下添加内容
举例my.cnf查找文件是否包含如下内容:A=1B='C'D=abcd如果没有找到上述内容,则在[mysqld]行下添加上述内容新手求大神赐教...
举例 my.cnf
查找文件是否包含如下内容:
A=1
B='C'
D=abcd
如果没有找到上述内容,则在[mysqld]行下添加上述内容
新手求大神赐教 展开
查找文件是否包含如下内容:
A=1
B='C'
D=abcd
如果没有找到上述内容,则在[mysqld]行下添加上述内容
新手求大神赐教 展开
2个回答
展开全部
假设你是一个个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
#!/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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以的, 使用正则来实现。发下私信过来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |