首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中有空间的Sed

在python中有空间的Sed
EN

Stack Overflow用户
提问于 2017-07-14 06:32:10
回答 1查看 379关注 0票数 1

我试图在VMkernel中使用sed执行替换。我使用了以下命令,

代码语言:javascript
复制
sed s/myname/sample name/g txt.txt

我说sed: unmatched '/'时出错了。我用\代替了空间。啊,真灵。

当我用python做同样的尝试时,

代码语言:javascript
复制
def executeCommand(cmd):
   process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
   output, error = process.communicate()
   print (output.decode("utf-8")) 
executeCommand('sed s/myname/sample\ name/g txt.txt')

我再次得到错误的sed: unmatched '/'。我使用的是\s,而不是空格,我的名字被samplesname替换了。

如何用空格替换字符串?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-14 07:52:55

最简单的做法是不明智地拆分命令:

代码语言:javascript
复制
executeCommand(['sed', 's/myname/sample name/g', 'txt.txt'])

否则,您将打开一罐蠕虫,有效地扮演shell解析器角色。

或者,您可以在shell中运行该命令,并让shell解析并运行命令:

代码语言:javascript
复制
import subprocess

def executeCommand(cmd):
   process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
   # Or:
   # This will run the command in /bin/bash (instead of /bin/sh)
   process = subprocess.Popen(['/bin/bash', '-c', cmd], stdout=subprocess.PIPE)
   output, error = process.communicate()
   print (output.decode("utf-8")) 

executeCommand("sed 's/myname/sample name/g' txt.txt")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45096181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档