我在这样的文件中声明了一个变量:
export psw=text
我想在{/ 1>}单个字符之前和之后连接变量的值。我的意思是,我想替换这样的值:
'
我怎样才能完成这项工作?
我想通过命令来做。我不想手动做。
答案 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输出,并为其自身添加引号