V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
JXDFSC
V2EX  ›  Linux

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

  •  
  •   JXDFSC · 2017-02-20 16:15:18 +08:00 · 1681 次点击
    这是一个创建于 2839 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ls | sed "s:^:`pwd`/:"

    这条命令是查看当前目录下所有文件的绝对路径
    请问 "s:^:`pwd`/:" 中的冒号是什么意思?
    使用 / 为什么不可以呢?
    使用 /的话会报错
    sed: -e expression #1, char 6: unknown option to `s'
    holyzhou
        1
    holyzhou  
       2017-02-20 16:56:50 +08:00
    1. : 冒号是分隔符,#,@亦可
    2. / 不可以是由上面一条引起的,使用 /的话,已经分不清匹配项与替换值了。(ls | sed "s/^/`pwd`//")
    JXDFSC
        2
    JXDFSC  
    OP
       2017-02-20 17:05:17 +08:00
    @holyzhou
    第一条的意思是[ : ]就是一个分隔的符号而已,对命令的执行不会产生影响么?
    第二条我没有看懂,请问他为什么会分不清呢?
    artandlol
        3
    artandlol  
       2017-02-20 17:19:29 +08:00
    使用 /的话
    ls | sed "s/^/`pwd`\//"
    holyzhou
        4
    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
        5
    JXDFSC  
    OP
       2017-02-20 18:20:26 +08:00
    @artandlol
    sed: -e expression #1, char 6: unknown option to `s'
    JXDFSC
        6
    JXDFSC  
    OP
       2017-02-20 18:20:47 +08:00
    @holyzhou
    好的,谢谢您,我看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2838 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:27 · PVG 22:27 · LAX 06:27 · JFK 09:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.