sed 错误:sed:-e 表达式 #1,字符 22:未终止的 `s' 命令
Posted
技术标签:
【中文标题】sed 错误:sed:-e 表达式 #1,字符 22:未终止的 `s\' 命令【英文标题】:sed error: sed: -e expression #1, char 22: unterminated `s' commandsed 错误:sed:-e 表达式 #1,字符 22:未终止的 `s' 命令 【发布时间】:2021-06-26 09:35:58 【问题描述】:我正在使用os.system
在 python 中运行 sed 命令。下面是代码。
os.system("sed -i /solid/s/Visualization Toolkit generated SLA File/chestwall/g mesh1.stl")
要更改的名称中包含空格。此外,在最后部分,即mesh1.stl
,1
需要是可变的。怎么做?
首先,对于这段代码,我收到以下错误:
sed: -e expression #1, char 22: unterminated s command
我试着把/
放在最后。
-
其次,我需要
mesh1
是上一行的变量。比如说,mesh1 为 a
,并且每次,a
都会发生变化。怎么写?
【问题讨论】:
【参考方案1】:确保 sed 语句/命令使用双引号或单引号,然后在将字符串传递给 os.system 之前使用“+”连接字符串
import os
var=1
os.system("sed -i 's/solid/s/Visualization Toolkit generated SLA File/chestwall/g' mesh" + var + ".stl")
【讨论】:
【参考方案2】:函数os.system()
现在被认为被
subprocess.call()
.
请您尝试以下方法:
import subprocess
a = 'mesh1'
cmd = ['sed', '-i', '/solid/s/Visualization Toolkit generated SLA File/chestwall/g', '0.stl'.format(a)]
subprocess.call(cmd)
您可以将命令作为列表而不是字符串传递,并且可以显式划分参数。
【讨论】:
以上是关于sed 错误:sed:-e 表达式 #1,字符 22:未终止的 `s' 命令的主要内容,如果未能解决你的问题,请参考以下文章
sed:-e表达式#1,字符27:在`s'命令的RHS上无效的引用 1