我试图使用执行sed-sed调用的python脚本替换.h文件中的某些字符。
这是变量\ orig.h中的一行,我希望将其'10‘替换为数组中的值:
#define PACKET_DELAY_TIME_A 10
如果我在bash中运行sed-命令,那么。
sed -E 's/(#define PACKET_DELAY_TIME_A).*/\1 2/' variables\ orig.h > variables.h
此操作非常好,输出结果与预期相同,即用“2”替换“10”。
但是,当我使用python系统调用来执行时,例如,
import os
pckt_delay_A = ["1","2","5","10","20"]
command = "sed -E 's/(#define PACKET_DELAY_TIME_A).*/\1 " + pckt_delay_A[1] + "/' variables\ orig.h > variables.h"
os.system(command)
这将产生SOH-字符,而不是预期的'#define PACKET_DELAY_TIME_A‘。
\u0001 2
我的输出文件里。知道是什么原因造成的,以及如何获得预期的输出吗?提前感谢!
发布于 2017-03-30 13:10:46
使用原始字符串。对于普通字符串,\1
由Python解释,这意味着将一个带有ASCII代码1
的字符放入字符串中,而不是传递给shell。
command = r"sed -E 's/(#define PACKET_DELAY_TIME_A).*/\1 " + pckt_delay_A[1] + r"/' variables\ orig.h > variables.h"
或者,您可以用Python编写代码,使用它的re
模块,而不是调用sed
。
https://stackoverflow.com/questions/43127927
复制相似问题