shell中通过sed替换文件中路径

通常sed指令修改行内容时使用sed -i " 9 s/^.*/"type in what you want modified!"/"

其中"type in what you want modified!"为替换后希望得到的内容。

由于用作替换的字符串里面包括与sed替换格式相同的"/",因此可以正常使用。

 

But,当希望通过sed方式修改配置文件中的目录时,由于用作替换的目录字符换(datapath=/home/datatest/)中包含"/",会影响sed的作用。

However,可用通过一下sed方式做替换操作:sed -i " 9 s:^.*:${datapath}:"

即:把"/"替换为":"

BTW,sed中使用“”比使用‘’明智。

 

自测示例脚本run.sh如下:

#!/bin/bash

#脚本名字run.sh,用于修改配置文件中数据的源路径和目标路径

getdatapath(){
# echo "入参:"$*
 if [ $# -eq 3 ];then
  if [[ ! -z $1 &&
    ! -z $2 &&
    ! -z $3 ]];then
    local emstype="$1"
    local srcdir="$2"
    local dstdir="$3"
    local configfile="../conf/DataParse.ini"

            #获取对应配置文件中需要修改的行数

    local srclinenum=$(grep -n "SrcPath=" ${configfile}|awk -F ':' '{print $1}')

            #对指定行所有内容进行重写
    sed -i ""${srclinenum}" s:^.*$:SrcPath=${srcdir}:" $configfile

    local dstlinenum=$(grep -n "ResultPath=" ${configfile}|awk -F ':' '{print $1}')
    sed -i ""${dstlinenum}" s:^.*$:ResultPath=${dstdir}:" $configfile
  else
    echo "run.sh--ERROR : Some parameter is null!"
  fi
 else
    echo "run.sh--ERROR : The parameter number is not matched!"
   fi
}

#获取源数据目录和目标目录
#getdatapath $*

getdatapath "testtype" "/home/srcdata/" "/home/dstdata/"

 

转载于:https://www.cnblogs.com/sayhihi/p/6051493.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值