通常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/"

shell中通过sed替换文件中路径的更多相关文章

  1. shell 脚本sed替换文件中某个字符串

    有些大文件,特别的大.有几百兆,甚至更大. 用文本编辑器打开十分的费劲,电脑都卡死了. 想替换其中的字符串,很麻烦. 这个时候有了shell,简直强大到爆炸! # du -h user.sql 304 ...

  2. linux shell 脚本获取和替换文件中特定内容

    1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) timeout title live find --se ...

  3. grep和sed替换文件中的字符串

    sed -i s/"str1"/"str2"/g `grep "str1" -rl --include="*.[ch]" ...

  4. grep和sed替换文件中的字符串【转】

    sed -i s/"str1"/"str2"/g `grep "str1" -rl --include="*.[ch]" ...

  5. 用sed替换文件中的空格

    请教sed 替换问题 请教各位如何替换多个空格为一个字符,如一个文件中间隔符有是一个空格,有的地方是多个空格,想全部用“|”替换,如何处理,请指教 请教sed 替换问题 [code]sed '/ \+ ...

  6. sed替换文件中的字符串

    sed -i 's/原字符串/替换字符串/g' filename

  7. linux sed 批量替换文件中的字符串或符号

    sed -i :直接修改读取的文件内容,而不是输出到终端.   sed -i 就是直接对文本文件进行操作的   替换每行第一次出现的字符串 sed -i 's/查找的字符串/替换的字符串/' 文件   ...

  8. 使用 sed 命令查找和替换文件中的字符串的 16 个示例

    当你在使用文本文件时,很可能需要查找和替换文件中的字符串.sed 命令主要用于替换一个文件中的文本.在 Linux 中这可以通过使用 sed 命令和 awk 命令来完成. 在本教程中,我们将告诉你使用 ...

  9. linux 小技巧(查找替换文件中的ascii编码字符)

    这里纪录一些linux下用到的小技巧,以免遗忘 在linux中经常碰见各种文件处理.最常用的就是替换文件中的某些字符.常见字符替换还是很容易完成.但是有些不可见字符以及ascii编码字符等等都无法直接 ...

随机推荐

  1. Codeforces1243C Tile Painting

    原题面:https://codeforces.com/contest/1243/problem/C 题目大意:给定数字n,有n个方块,第i个和第j个之间的距离(abs(i-j))如果是n的因子,那么第 ...

  2. LeetCode455 分发饼干(简单贪心—Java优先队列简单应用)

    题目: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有 ...

  3. S7-300数据处理基本知识(结尾以MW8+1 ADD指令实训仿真,并用状态表监控及刷写变量)

    数据处理基本知识汇总 STEP7 的数据类型包括什么? 基本数据类型 复杂数据类型 用于FB(功能块)的输入,输出参数类型 用于FC(功能)的输入,输出参数类型 基本数据类型是什么? 先列举12种数据 ...

  4. mysql基本知识的总结

    Mysql基本sql知识 Navicat快捷方式: 选中当前行 在行尾:shift+home 在行首:shift+end 执行当前行:ctrl+shift+R 复制当前行:ctrl+D 显示所有数据库 ...

  5. eclipse中使用jstl

    错误提示为"can not find the tag library for http://java.sun.com/jsp/jstl/core" 这是我在练习把axis2和普通j ...

  6. JVM探秘:jstack查看Java线程状态

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. jstack命令可以打印Java进程的各个线程堆栈跟踪信息,可以用来查看Java中各个 ...

  7. java核心-多线程(1)-知识大纲

    Thread,整理一份多线程知识大纲,大写意 1.概念介绍 线程 进程 并发 2.基础知识介绍 Java线程类 Thread 静态方法&实例方法 Runnable Callable Futur ...

  8. 实验吧-杂项-flag.xls(notepad++查找)、保险箱(linux文件分解、密码破解)

    flag.xls 下载文件,用notepad++打开,查找flag就能找到flag. 保险箱(linux文件分解.密码破解) 将图片保存下来,用kali的binwalk分析,发现有rar文件,然后用f ...

  9. Es知识整理

    一.Es是如何实现分布式的 1.Es本身基于lucene,高度支持分布式的核心思想就在于,在多个服务器上启动多个Es进程实例,组建了一套Es集群. 2.其次,因为shard分片的应用,非常灵活的支持数 ...

  10. 2016蓝桥杯省赛C/C++A组第九题 密码脱落

    题意: X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串). 由于年代久远,其中 ...