在 python 中使用 space 进行 Sed
Sed with space in python
我正在尝试在 VMkernel
中使用 sed 执行替换。我使用了以下命令,
sed s/myname/sample name/g txt.txt
我收到一条错误消息 sed: unmatched '/'
。
我用 \
替换了 space。成功了。
当我尝试使用 python、
时
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
而不是 space 我将名称替换为 samplesname
。
如何用 space 替换字符串?
最简单的事情就是不聪明地拆分命令:
executeCommand(['sed', 's/myname/sample name/g', 'txt.txt'])
否则你就是在打开一堆蠕虫,有效地扮演着 shell 解析器的角色。
或者您可以 运行 shell 中的命令并让 shell 解析和 运行 命令:
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")
我正在尝试在 VMkernel
中使用 sed 执行替换。我使用了以下命令,
sed s/myname/sample name/g txt.txt
我收到一条错误消息 sed: unmatched '/'
。
我用 \
替换了 space。成功了。
当我尝试使用 python、
时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
而不是 space 我将名称替换为 samplesname
。
如何用 space 替换字符串?
最简单的事情就是不聪明地拆分命令:
executeCommand(['sed', 's/myname/sample name/g', 'txt.txt'])
否则你就是在打开一堆蠕虫,有效地扮演着 shell 解析器的角色。
或者您可以 运行 shell 中的命令并让 shell 解析和 运行 命令:
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")