【问题标题】: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 需要是可变的。怎么做?

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

    sed: -e expression #1, char 22: unterminated s command

我试着把/放在最后。

  1. 其次,我需要mesh1 是上一行的变量。比如说,mesh1 为 a,并且每次,a 都会发生变化。怎么写?

【问题讨论】:

    标签: python sed os.system


    【解决方案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)
      

      您可以将命令作为列表而不是字符串传递,并且可以显式划分参数。

      【讨论】:

        猜你喜欢
        • 2019-03-17
        • 1970-01-01
        • 2020-11-25
        • 1970-01-01
        • 1970-01-01
        • 2017-07-10
        • 1970-01-01
        • 2013-07-07
        • 2012-05-05
        相关资源
        最近更新 更多