shell实现查询某一单一字符串所在行,并替换其内容

脚本如下,注意key必须唯一,不然会有问题,使用方法是./change.sh filename key value
分别传入 文件名 键 值
change.sh

#!/bin/bash
#匹配key=value,且key唯一
# ./change.sh filename key value
filename=$1
key=$2
value=$3
# 获取key的行号
line=$(grep -n "$2" $filename | cut -d ":" -f 1)
#echo $line

# 修改文件$1,行号为line的内容
line=$line"c $key=$value"
sed -i "$line" $filename
#echo "sed -i "$line" $filename"

如果不是 key=value的情况,请修改第二个line的内容

如果有多行匹配的key,只修改第一行可以追加head -1

#!/bin/bash
#匹配key=value,且key唯一
# ./change_key_value.sh filename key value
filename=$1
key=$2
value=$3
# 获取key的行号
line=$(grep -n "$2" $filename | cut -d ":" -f 1 | head -1)
#echo $line

# 修改文件$1,行号为line的内容
line=$line"c $key=$value"
sed -i "$line" $filename
#echo "sed -i "$line" $filename"

你可能感兴趣的:(Linux,shell)