加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

嵌入式 | 分享一种修改配置文件的方法

2022/08/02
1965
阅读需 6 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大家好,我是杂烩君。

本次分享一种修改配置文件的方法,文章很短,但挺实用~

平时,我们使用的配置文件可以是json、ini等这些标准格式,也可以是一些非标准格式。这些标准格式都有一些对应的库进行解析修改,比较方便。但是,有时候我们需要修改一些非标准格式的一些文件里的一些内容,可能就得自己想办法了。

这里提供一种方法:使用sed工具进行修改。

sed 工具是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。

例如,之前我们分享的文章:远程登陆开发板:RTL8723驱动移植+wpa_supplicant移植+SSH移植中有用到如下用于配置板子所连接WiFi的配置文件wpa_supplicant.conf:

r/run/wpa_supplicant
update_config=1
ap_scan=1

network={
        ssid="test"
        psk="12345678"
        scan_ssid=1
        key_mgmt=WPA-PSK
        priority=1
}

假如我们想要修改ssid的值为 LinuxZn 及psk的值为 88888888 ,可以怎么修改?

命令行操作:

sed -i 's/ssid="[^"]*"/ssid="LinuxZn"/g' ./wpa_supplicant.conf
sed -i 's/psk="[^"]*"/ssid="88888888"/g' ./wpa_supplicant.conf

也可以在C代码中调用以上命令,如:

代码:

#include <stdio.h>   
#include <unistd.h>
#include <stdlib.h>
#include <string.h>

#define SHELL_CMD_MODIFY_WIFI_SSID        "sed -i \'s/ssid=\"[^\"]*\"/ssid=\"%s\"/g\' ./wpa_supplicant.conf"
#define SHELL_CMD_MODIFY_WIFI_PSW         "sed -i \'s/psk=\"[^\"]*\"/psk=\"%s\"/g\' ./wpa_supplicant.conf"
#define SHELL_CMD_RESET_WIFI_CONF_FILE    "cp default_wpa_supplicant.conf wpa_supplicant.conf"


int main(int arc, char *argv[])
{
    char shell_cmd[256] = {0};

    // 重置WiFi配置文件
    system(SHELL_CMD_RESET_WIFI_CONF_FILE);

    // 修改WiFi名称
    snprintf(shell_cmd, sizeof(shell_cmd), SHELL_CMD_MODIFY_WIFI_SSID, "LinuxZn");
    system(shell_cmd);

    // 清除shell_cmd
    bzero(shell_cmd, sizeof(shell_cmd));

    // 修改WiFi密码
    snprintf(shell_cmd, sizeof(shell_cmd), SHELL_CMD_MODIFY_WIFI_PSW, "88888888");
    system(shell_cmd);

 return 0;
}

运行结果:

在修改配置文件之前,需要重置一下,保证配置文件的格式正确。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
KC5032K25.0000C10E00 1 KYOCERA Corporation CMOS Output Clock Oscillator
$7.11 查看
AD9364BBCZREEL 1 Analog Devices Inc 1 x 1 RF Agile Transceiver
暂无数据 查看
ECS-250-10-33B-CWN-TR 1 ECS International Inc Parallel - Fundamental Quartz Crystal,

ECAD模型

下载ECAD模型
$0.49 查看

相关推荐

电子产业图谱

本公众号专注于嵌入式技术,包括但不限于C/C++、嵌入式、物联网、Linux等编程学习笔记,同时,公众号内包含大量的学习资源。欢迎关注,一同交流学习,共同进步!