【问题标题】:Delete a network profile from wpa_supplicant.conf in Linux (raspbian).从 Linux (raspbian) 中的 wpa_supplicant.conf 中删除网络配置文件。
【发布时间】:2013-11-28 06:31:10
【问题描述】:

我正在运行 Raspbian,但这不是 Pi 特定的问题

我需要从我的 C 程序中删除 etc/wpa_supplicant/wpa_supplicant.conf 中未使用的网络配置文件。

我的程序以 root 身份运行。

这个有shell命令吗?

我尝试使用 grep、tr 和 sed 的组合,但还没有完全做到。 空格也可能会有所不同。

我需要删除给定 ssid 的这个块,忽略空格。

   network={
      ssid="MY_SSID_TO_DELETE"
      .........
   }

【问题讨论】:

  • 您可以使用sed 完成它;但同意,应该有一个实用程序。

标签: linux sed awk debian raspberry-pi


【解决方案1】:
SSID_TO_DELETE="Put your ssid here"
sed -n "1 !H;1 h;$ {x;s/[[:space:]]*network={\n[[:space:]]*ssid=\"${SSID_TO_DELETE}\"[^}]*}//g;p;}" YourFile

在可以直接在命令中生成您的 SSID 信息的 C 中(将 Put_your_ssid_here 替换为 ssid 的值)

sed '1 !H;1 h;$ {x;s/[[:space:]]*network={\n[[:space:]]*ssid="Put_your_ssid_here"[^}]*}//g;}' YourFile

第一个 sn-p 用 \n 代替 ;

SSID_TO_DELETE="Put your ssid here"
    sed -n "1 !H
       1 h
       $ {
         x
         s/[[:space:]]*network={\n[[:space:]]*ssid=\"${SSID_TO_DELETE}\"[^}]*}//g
         p
         }" YourFile

原理(基于上一个sn-p)

  • sed -n:读取时不打印行(除非代码中有特定请求)
  • 1 !H 和 1 h 将所有行加载到保持缓冲区中(因此所有文件都在内存中,sed 默认逐行工作)
  • $ 表示到达最后一行的时间
  • x, 将保持缓冲区(加载文件)加载到工作缓冲区(sed 可以工作的那个)
  • s/... 将包含您的网络模式的文本部分替换为下一行的 SSID 之后的第一个 } (g:所有出现)
  • p 打印最终结果

【讨论】:

  • 嗨,我尝试了上面的第一个代码 sn-p 我收到了这条消息` -bash: !H: event not found`
  • 第二个代码 sn-p 'sort-of' 有效。删除前后的文件内容,都打印在屏幕上。如果我们只能打印后者(已删除的版本),那就完美了!
  • 尝试 sed -n 并在最后将 g;} 更改为 g;p;}。对于 sn-p,我在 sed 的 2 前 1 之后更改并添加一个空格(复制时缺少)
  • 您好,感谢您的回复!抱歉延迟回复...周末有点忙...第二个代码现在可以使用! (我会再测试一下)......即使在你建议的编辑之后,第一个代码仍然给出 -bash: !H: event not found`......我不明白你关于添加空格的说明......在哪里添加?同样在第一个代码中,sed 参数包含在 " 中,而在第二个代码中它们包含在 '. - 可以吗?如果第一个代码也可以工作,那就太好了,所以我可以将它添加到脚本,然后将 ssid 传递给它。谢谢!
  • 我只是调整了第一个 sn-p 并在此处进行测试(AIX 和 KSH)。没有发生错误并显示良好的结果。你还有问题吗?
【解决方案2】:

试试这个

SSID_TO_DELETE=$1
    sudo sed -n "1 !H
       1 h
       $ {
         x
         s/[[:space:]]*network={\n[[:space:]]*ssid=\"${SSID_TO_DELETE}\"[^}]*}//g
         p
         }" /etc/wpa_supplicant/wpa_supplicant.conf > /etc/wpa_supplicant/wpa_supplicant.conf

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2017-05-08
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多