我想在bash中的一个单词之前和之后连接一个字符

时间:2017-02-10 19:24:34

标签: bash substitution

我在这样的文件中声明了一个变量:

export psw=text

我想在{/ 1>}单个字符之前之后连接变量的值。我的意思是,我想替换这样的值:

'

我怎样才能完成这项工作?

我想通过命令来做。我不想手动做。

3 个答案:

答案 0 :(得分:2)

这个sed命令将完成你的工作:

sed -i.bak -E "s/(export[ \t]+[[:alnum:]]+=)([^']+)/\1'\2'/" file

上面的表达式只会在不存在时添加单引号。

答案 1 :(得分:2)

使用Perl简单易用

perl -i -lpe 's/\=(\w+)$/='"'\\1'"'/' your-file

-i保存in-palce

<强>输出
export psw='text'

如何运作
s/.../此部分匹配,希望你知道 /.../此部分用于替换您已匹配的部分。
因此,在第一步中,您匹配=(\w+)$
和等号和一个单词,它应该是行的结尾。好的,之后您将此部分更改为
/='"'\\1'"'
这意味着将与匹配组操作员 ()匹配的内容与另一个单引号相匹配。 所以匹配:=text
然后用='text'

替换它

-i用于保存结果 -p用于打印到屏幕+ a while循环
-l换了一行新词 -e临时计划。

只需使用而不使用-i ,然后您一点一点地意识到它是如何工作的。

注意
'"'只是为了逃避bash中的单引号 \\1以及此

答案 2 :(得分:0)

如果您更喜欢回声方法,也可以这样做

pwd=text
export psw=$(echo "\'$pwd\'")

\需要转义单引号,因此它将成为字符串的一部分,并为您指定变量的echo输出,并为其自身添加引号