分享一種嵌入式軟體中修改配置檔案的方法

大家好,我是雜燴君。

本次分享一種修改配置檔案的方法,文章很短,但挺實用~

平時,我們使用的配置檔案可以是json、ini等這些標準格式,也可以是一些非標準格式。這些標準格式都有一些對應的庫進行解析修改,比較方便。但是,有時候我們需要修改一些非標準格式的一些檔案裡的一些內容,可能就得自己想辦法了。

這裡提供一種方法:使用sed工具進行修改。

sed 工具是一個強大而簡單的文字解析轉換工具,可以讀取文字,並根據指定的條件對文字內容進行編輯(刪除、替換、新增、移動等),最後輸出所有行或者僅輸出處理的某些行。

例如,之前我們分享的文章:遠端登陸開發板:RTL8723驅動移植+wpa_supplicant移植+SSH移植中有用到如下用於配置板子所連線WiFi的配置檔案wpa_supplicant。conf:

r/run/wpa_supplicantupdate_config=1ap_scan=1network={ 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。confsed -i ‘s/psk=”[^“]*”/psk=“88888888”/g’ 。/wpa_supplicant。conf

分享一種嵌入式軟體中修改配置檔案的方法

也可以在C程式碼中呼叫以上命令,如:

程式碼:

#include #include #include #include #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;}

執行結果:

分享一種嵌入式軟體中修改配置檔案的方法

在修改配置檔案之前,需要重置一下,保證配置檔案的格式正確。