求助:在Bash中按指定格式解析.ini文件
Bash实现INI文件条目展开方案
我来给你一个简单高效的Bash实现方案,用awk就能轻松搞定这个需求:
首先看一下你的输入INI内容:
[Machine1] app=version1 [Machine2] app=version1 app=version2 [Machine3] app=version1 app=version3
期望输出格式:
[Machine1]app = version1 [Machine2]app = version1 [Machine2]app = version2 [Machine3]app = version1 [Machine3]app = version3
核心实现命令
awk '/^\[.*\]$/{section=$0; next} {print section $0}' your_file.ini
命令原理解释
/^\[.*\]$/:匹配所有以[开头、]结尾的行(也就是INI文件中的section标题行,比如[Machine1]){section=$0; next}:将匹配到的section标题行内容存入变量section,然后用next跳过当前行的后续处理,直接处理下一行{print section $0}:对于非section的行(即app=versionX的配置行),将之前保存的section内容与当前行拼接后打印,正好得到你需要的格式
处理空行的优化版
如果你的INI文件中存在空行,不想输出这些空行对应的无效内容,可以使用下面的命令,只处理非空行:
awk '/^\[.*\]$/{section=$0; next} NF>0{print section $0}' your_file.ini
这里的NF>0表示仅处理包含内容的行(空行的字段数NF为0,会被跳过)
内容的提问来源于stack exchange,提问作者Ras
相关产品推荐
相关产品推荐

