我正在编写一个结构脚本来更改nodejs版本。要做到这一点,我需要删除
节点v0.10.32-Linux的64
并将其替换为
节点-v6.9.1-Linux的64
反之亦然。
下面是该行,我需要一个正则表达式来获取该行的粗体部分
/家庭/ portweb /软件/的NodeJS /的节点v0.10.32-Linux的64 / bin中
以下是更改nodejs版本的代码。
@task
def changeVersion(appname='nodejs', rootdir='/home/portweb/software',homedir='/home/portweb',tarfile='node-v6.9.1-linux-x64.tar.gz',nodeversion='node-v'):
"""install nodejs"""
base_dir = rootdir +'/'+appname
run ('if [ ! -d ' + base_dir + ' ] ; then mkdir -p ' + base_dir + '; fi')
put('../package/'+tarfile, base_dir + '/', use_sudo=False)
with cd (base_dir):
run('tar -zxf '+ tarfile)
run ('sed -i \'s/regex/'+nodeversion+'/g\' /home/portweb/.bashrc')
print "****Nodejs Version Changed"
nodeversion = node-v0.10.32-linux-x64 或 node-v6.9.1-linux-x64 ;
答案 0 :(得分:1)
这是sed的正则表达式:
"sed -i 's,/home/portweb/software/nodejs/\(.*\)/bin,/home/portweb/software/nodejs/'" + nodeversion + "'/bin,g'"
请注意,您可以使用/
以外的分隔符来提高易读性,因此我们在这里使用了,
答案 1 :(得分:0)
你可以使用fabric sed函数替换你想要的 prueba.txt 链:
def sed_node():
sed('/home/user/test/prueba.txt', 'node-v0.10.32-linux-x64', 'node-v6.9.1-linux-x64')
并运行:
$ fab sed_node