使用sed -e注释和取消注释

时间:2017-07-19 09:25:36

标签: python sed raspberry-pi comments

我在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之外的所有内容。

非常感谢任何帮助。

1 个答案:

答案 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命令。