是否可以使用SED替换env var中的某个东西?如何在没有env var的情况下使用SED?
$ a='aoeua'
$ sed '[email protected]@[email protected]' <$a
bash: aoeua: No such file or directory
$ env|grep "SHELL"
SHELL=/bin/bash
我想输出是
ooeuo
在'aoeua'
与o
代替每个a
。
是否可以使用SED替换env var中的某个东西?如何在没有env var的情况下使用SED?
$ a='aoeua'
$ sed '[email protected]@[email protected]' <$a
bash: aoeua: No such file or directory
$ env|grep "SHELL"
SHELL=/bin/bash
我想输出是
ooeuo
在'aoeua'
与o
代替每个a
。
使用echo:
$ echo "$a" | sed '[email protected]@[email protected]'
在bash你也可以做与${parameter/pattern/string}
语法简单替代。例如:
$ v='aoeua'
$ echo ${v/a/o}
ooeua
请注意,这只会替换模式的第一个匹配项。
对于**全局替换**,我们可以做'echo $ {v // a/o}'。 – 2012-01-18 02:59:33
@JaypalSingh谢谢!我在手册页中没有看到任何提及,但它看起来像是有效的。 – 2012-01-18 06:52:52
是的,它写得不好。这就是它所说的:'$ {parameter/pattern/string}该模式被扩展为产生一个模式,就像在路径名扩展中一样。参数被扩展并且模式与其值的最长匹配被字符串替换。 **如果模式以/开头,则模式的所有匹配都将替换为字符串**。通常只有第一场比赛被替换。' – 2012-01-18 07:08:16
我已经编辑你的问题说明你要找的输出,基于公认的答案。原来的问题告诉我们什么*没有*工作,但没有明确告诉我们你想做什么。 (劳伦斯猜对了。) – 2012-01-18 01:25:48