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.stl1 需要是可变的。怎么做?

    首先,对于这段代码,我收到以下错误:

    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

shell脚本——正则表达式Sed与Awk文本处理工具详解

Shell编程之正则表达式(sed)

sed:-e expression#1,char 40:unterminated`s'命令

Sed..

Sed..