我们知道一般的sed文本替换命令格式如下:
sed -e "s/origin/new/g" input.txt
但当我们要替换的东西或替换后的东西不再像origin或new这样,而是一个路径时怎么办呢?
答案是转义!!
例如我有以下input.txt的文本
1. set path VARPATH running workspace. 2. runing this program
我想把里面的VARPATH替换为/var/tmp/cloud,用shell脚本实现如下:
!/bin/sh ########################################################### # sedpath.sh # this script is used to deal with sed replace with path ########################################################### VARPATH="/var/tmp/cloud" VARPATHSED=$(echo ${VARPATH} |sed -e 's/\//\\\//g' ) echo "origin content:" echo "-----------------" cat input.txt echo "-----------------" echo "VARPATH=${VARPATH}" echo "VARPATHSED=${VARPATHSED}" cat input.txt |sed -e "s/VARPATH/${VARPATHSED}/g" > output.txt echo "the result content:" echo "-----------------" cat output.txt echo "-----------------"
运行结果如下: