python中的Sed命令
我的意见如下python中的Sed命令,python,Python,我的意见如下 Type combinational function (A B) 希望输出是 Type combinational function (A B) 我使用了代码和它的工作原理 sed 's/\([^ ]* [^ ]*\) \(function.*\)/\1\n\2/' Input_file 当我在python脚本中使用os.system和subprocess使用此代码时,它会给我带来错误。 如何在python脚本中执行这个sed。或者我如何为上面的sed代码编写pytho
Type combinational function (A B)
希望输出是
Type combinational
function (A B)
我使用了代码和它的工作原理
sed 's/\([^ ]* [^ ]*\) \(function.*\)/\1\n\2/' Input_file
当我在python脚本中使用os.system
和subprocess
使用此代码时,它会给我带来错误。
如何在python脚本中执行这个sed
。或者我如何为上面的sed代码
编写python代码。
使用的Python代码
cmd='''
sed 's/\([^ ]* [^ ]*\) \(function.*\)/\1\n\2/' Input_file
'''
subprocess.check_output(cmd, shell=True)
错误是
sed: -e expression #1, char 34: unterminated `s' command
字符串中的
\n
被Python替换为文字换行符。正如@bereal在评论中所建议的那样,您可以通过在脚本周围使用r''''.''.''.'
而不是'.'''.''.''.'.'.'.'.'.''.'.''.''.
来避免这种情况;但是一个更好的解决方案是避免在sed
中做Python本身已经做得很好的事情
打开('Input_file')作为inputfile的:
lines=inputfile.read()
行=行。替换('function','\n function')
这比您当前的sed
脚本稍微宽松一些,因为它不需要在函数
标记之前有两个空格分隔的标记。如果您想严格要求,请尝试re.sub()
重新导入
# ...
lines=re.sub(r'^(\S+\S+\S+\S+(函数)’,r'\1\n\2',lines,re.M)
(切题地说,您还希望避免不必要的
shell=True
;也许可以看到)字符串中的\n
被Python替换为文字换行符。正如@bereal在评论中所建议的那样,您可以通过在脚本周围使用r''''.''.''.'
而不是'.'''.''.''.'.'.'.'.'.''.'.''.''.
来避免这种情况;但是一个更好的解决方案是避免在sed
中做Python本身已经做得很好的事情
打开('Input_file')作为inputfile的:
lines=inputfile.read()
行=行。替换('function','\n function')
这比您当前的sed
脚本稍微宽松一些,因为它不需要在函数
标记之前有两个空格分隔的标记。如果您想严格要求,请尝试re.sub()
重新导入
# ...
lines=re.sub(r'^(\S+\S+\S+\S+(函数)’,r'\1\n\2',lines,re.M)
(切题来说,您还希望避免不必要的
shell=True
;也许可以看到)在打开'
之前尝试r
。在打开'
之前尝试r
。