在 shell 命令中使用:是什么作用?
- 0次
- 2021-07-01 14:25:20
- idczone
ls | sed "s:^:`pwd`/:"
这条命令是查看当前目录下所有文件的绝对路径
请问 "s:^:`pwd`/:" 中的冒号是什么意思?
使用 / 为什么不可以呢?
使用 /的话会报错
sed: -e expression #1, char 6: unknown option to `s'
1. : 冒号是分隔符,/>2. / 不可以是由上面一条引起的,使用 /的话,已经分不清匹配项与替换值了。(ls | sed "s/^/`pwd`//")
第一条的意思是[ : ]就是一个分隔的符号而已,对命令的执行不会产生影响么?
第二条我没有看懂,请问他为什么会分不清呢?
使用 /的话
ls | sed "s/^/`pwd`\//"
1. 不影响,只是个定位符, 很多时候这个方式很取巧 https://stackoverflow.com/questions/16790793/how-to-replace-strings-containing-slashes-with-sed ,看下 stackoverflow 这个帖子
2. sed 的替换的标准语法是 """ [address]s/pattern/replacement/flags """ , 你的 replacement 中包含了 / , 所以会导致语法有歧义,不清楚这里的 /是被替换值还是定位符了。
3. 看书,基础搞搞牢固 。 http://down.51cto.com/data/611478
sed: -e expression char 6: unknown option to `s'
好的,谢谢您,我看看