sed在shell脚本中引用变量

需求

        在测试过程中,有很多配置项是写在文件中的,这时想通过脚本来改文件内容,这是个很常见的需求

问题

        sed 是linux里很强大好用的文本修改工具,但是在使用过程中,需要在shell里的sed语句中引用变量,此时有一点小问题,$符号sed自身可以解析,所以会在sed语句中做转义,导致后边的参数名不在表示一个变量

解决

        sed命令使用单引号的情况下,可以使用'"$VAR"'引用(单引号,然后双引号,变量),做转义

#!/bin/bash
FILE="/usr/local/sed_test.file"

# 查找行数
LINE=`sed -n '/G_num =/=' $FILE`

#传入参数 必须为数字
if [ -z $1 ];then
    echo "args is null"
    exit
fi
tmp=`echo $1|sed 's/[0-9]//g'`
[ -n "${tmp}" ]&& { echo "Args must be integer!";exit 1; }

# 创建替换行 

new_line="G_num = "$1 
echo $new_line $LINE
# a="("$LINE")i\\"$new_line""
sed -i ''"$LINE"'c\\'"$new_line"'' $FILE
if [ $? -eq 0 ];then
        echo "finished"
fi

参考: sed引用变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值