bash - 在 bash 中解析 .ini 文件

标签 bash ini

我有一个下面的属性文件,并想如下所述解析它。请帮忙做这件事。

我创建的 .ini 文件:

[Machine1]

app=version1


[Machine2]

app=version1

app=version2

[Machine3]

app=version1
app=version3

我正在寻找一个解决方案,其中应该像解析 ini 文件一样
[Machine1]app = version1
[Machine2]app = version1
[Machine2]app = version2
[Machine3]app = version1
[Machine3]app = version3

谢谢。

最佳答案

尝试:

$ awk '/\[/{prefix=$0; next} $1{print prefix $0}' file.ini
[Machine1]app=version1
[Machine2]app=version1
[Machine2]app=version2
[Machine3]app=version1
[Machine3]app=version3

这个怎么运作
  • /\[/{prefix=$0; next}
    如果任何行以 [ 开头,我们将该行保存在变量 prefix 中然后我们跳过其余的命令并跳转到 next线。
  • $1{print prefix $0}
    如果当前行不为空,我们打印前缀,后跟当前行。

  • 添加空格

    在任何出现的 = 周围添加空格:
    $ awk -F= '/\[/{prefix=$0; next} $1{$1=$1; print prefix $0}' OFS=' = ' file.ini
    [Machine1]app = version1
    [Machine2]app = version1
    [Machine2]app = version2
    [Machine3]app = version1
    [Machine3]app = version3
    

    这通过使用 = 起作用作为输入和 = 上的字段分隔符作为输出的字段分隔符。

    关于bash - 在 bash 中解析 .ini 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399984/

    相关文章:

    javascript - 如何创建共享某些属性的对象

    linux - 如何在 Linux 中使用 curl 或任何 shell 脚本或任何命令行实用程序将整个目录上传到 artifactory?

    bash - 删除 bash 中除最新的 X 文件之外的所有文件

    linux - 在 Linux 中迭代更改文件名

    PHP.ini 文件更改未生效(内存限制)

    php - 当值中包含分号 (;) 时使用 PHP 解析 INI 文件

    linux - Bash 脚本 - 检查用户是否登录

    bash - 嵌套的 Herodoc 操作顺序

    php - 如何在 .user.ini 中引用主目录

    parsing - INI 文件的节定义中是否允许使用连字符?