在 shell 命令中使用:是什么作用?

2017-02-20 16:15:18 +08:00
 JXDFSC
ls | sed "s:^:`pwd`/:"

这条命令是查看当前目录下所有文件的绝对路径
请问 "s:^:`pwd`/:" 中的冒号是什么意思?
使用 / 为什么不可以呢?
使用 /的话会报错
sed: -e expression #1, char 6: unknown option to `s'
1680 次点击
所在节点    Linux
6 条回复
holyzhou
2017-02-20 16:56:50 +08:00
1. : 冒号是分隔符,#,@亦可
2. / 不可以是由上面一条引起的,使用 /的话,已经分不清匹配项与替换值了。(ls | sed "s/^/`pwd`//")
JXDFSC
2017-02-20 17:05:17 +08:00
@holyzhou
第一条的意思是[ : ]就是一个分隔的符号而已,对命令的执行不会产生影响么?
第二条我没有看懂,请问他为什么会分不清呢?
artandlol
2017-02-20 17:19:29 +08:00
使用 /的话
ls | sed "s/^/`pwd`\//"
holyzhou
2017-02-20 17:28:59 +08:00
@JXDFSC 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
JXDFSC
2017-02-20 18:20:26 +08:00
@artandlol
sed: -e expression #1, char 6: unknown option to `s'
JXDFSC
2017-02-20 18:20:47 +08:00
@holyzhou
好的,谢谢您,我看看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/341796

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX