我在python脚本中使用sed -e在我的/ etc / network / interfaces文件中为我的RPi2注释和取消注释行。它的工作原理是当我运行我的python脚本时,/ etc / network / interfaces中的特定行将分别进行注释和取消注释。但是,我遇到了一个错误,我无法对某些行进行注释,换句话说,它没有添加“#'#'在我想要注释掉的前面。我也面临着取消注释wpa-conf /etc/wpa_supplicant.conf的问题
这是我在python脚本中用来评论的代码:
stream = os.popen("sudo sed -e '/iface wlan0 inet static/ s/^#*/#/' -i /etc/network/interfaces
我还有其他4条几乎完全相同的线条,只是“iface ...... static'变化。
我用来取消注释wpa-conf /etc/wpa_supplicant.conf的代码是这样的:
stream = os.popen("sudo sed -e '/wpa-conf /etc/wpa_supplicant.conf/ s/^#*//' -i /etc/network/interfaces
运行python时出现的错误是:
sh :1 tc/wpa_supplicant.conf/: not found
python脚本设法注释掉除1行之外的所有行,并取消注释除了wpa-conf /etc/wpa_supplicant.conf之外的所有内容。
非常感谢任何帮助。
答案 0 :(得分:1)
您需要将此匹配/wpa-conf /etc/wpa_supplicant.conf/
中的正斜杠转义为/wpa-conf \/etc\/wpa_supplicant.conf/
正在发生的事情是,sed看到/wpa-conf /e
,它告诉它在匹配/wpa-conf /
的行上执行后续命令。 "后续命令"是tc/wpa_supplicant.conf/
,这不是有效的sed命令。