V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
NonClockworkChen
V2EX  ›  问与答

请教 bash 替换字符问题

  •  
  •   NonClockworkChen · 2019-12-01 09:08:02 +08:00 · 1711 次点击
    这是一个创建于 1823 天前的主题,其中的信息可能已经有所发展或是发生改变。
    输入:foo="Mike is ";bar=${foo/ /|};echo $bar
    输出:Mike|is
    上面是想要的效果。
    如果把 Mike is 保存在 voc4.txt 文件里。(一行保存一个单词)
    输入:foo="$(< voc4.txt)";bar=${foo/ /|};echo $bar
    输出:Mike is
    就没替换了,为什么?不知道哪里细节错了。请教大佬。
    4 条回复    2019-12-01 13:10:58 +08:00
    df4VW
        1
    df4VW  
       2019-12-01 09:17:42 +08:00   ❤️ 1
    你这不是逗我么兄弟

    一行一个单词,那你哪里来的空格
    uyhyygyug1234
        2
    uyhyygyug1234  
       2019-12-01 11:26:02 +08:00
    a@master:~# cat voc4.txt
    Mike is
    a@master:~# foo="$(< voc4.txt)";bar=${foo/ /|};echo $bar
    Mike|is


    我这可以啊
    NonClockworkChen
        3
    NonClockworkChen  
    OP
       2019-12-01 12:27:08 +08:00
    @uyhyygyug1234 你不是一行一个单词,是一行两个单词吧。
    用 bash 的 pattern matching,我感觉是没法处理多行的,我现在用了 tr 命令来解决。
    zbinlin
        4
    zbinlin  
       2019-12-01 13:10:58 +08:00
    bar=${foo/$'\n'/|}
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5469 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 07:37 · PVG 15:37 · LAX 23:37 · JFK 02:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.