如何在没有带env var的文件的情况下使用SED?

hhh*_*hhh 8 bash shell sed environment-variables

是否可以使用SED替换env var中的东西?

$ a='aoeua'
$ sed 's@a@o@g' <$a
bash: aoeua: No such file or directory
$ env|grep "SHELL"
SHELL=/bin/bash
Run Code Online (Sandbox Code Playgroud)

我想要的输出是

ooeuo
Run Code Online (Sandbox Code Playgroud)

代替每个a'aoeua'o.

Lau*_*ves 12

使用echo:

$ echo "$a" | sed 's@a@o@g'
Run Code Online (Sandbox Code Playgroud)

在bash中,您还可以使用${parameter/pattern/string}语法进行简单替换.例如:

$ v='aoeua'
$ echo ${v/a/o}
ooeua
Run Code Online (Sandbox Code Playgroud)

请注意,这只会替换第一次出现的模式.

  • 对于**全局替换**我们可以做'echo $ {v // a/o}`. (3认同)

pot*_*ong 7

这可能对你有用:

a='aoeua'
sed 's@a@o@g' <<<$a
ooeuo
Run Code Online (Sandbox Code Playgroud)

<<<$a是一个here-string