Shell 中没有没有 Replace 方法,但是有一些替换方案。



用法

1
${parameter/pattern/string}

使用

1
2
3
4
5
6
7
8
9
10
11
12
$ a=/data/wxnacy/data/log/log.txt
$ echo ${a/data/User} # 将第一个 data 替换为 User
/User/wxnacy/data/log/log.txt

$ echo ${a//data/User} # 将全部 data 替换为 User
/User/wxnacy/User/log/log.txt

$ echo ${a/#\/data/\/User} # 匹配开头 /data 替换为 /User(/ 需要转义)
/User/wxnacy/data/log/log.txt

$ echo ${a/%log.txt/User} # 匹配结尾 log.txt 替换为 User
/data/wxnacy/data/log/User

其他方法

还有一种方法是利用 sed 来实现

1
2
$ echo $a | sed -e "s/data/User/g"
/User/wxnacy/User/log/log.txt

对比一下还是第一种方式简单

03-16 23:28