Eu quero atualizar um arquivo INI usando o awk

2

Eu tenho um arquivo ini que se parece com isso

[backup]
[persistence]
log_backup_timeout_s = 900
log_mode = normal

Eu quero atualizar este arquivo para

[backup]
data_backup_parameter_file = /usr/sap/SI1/SYS/global/hdb/opt/hdbconfig/param
log_backup_parameter_file = /usr/sap/SI1/SYS/global/hdb/opt/hdbconfig/param
log_backup_using_backint = true

[persistence] 
basepath_logbackup = /usr/sap/SI2/HDB02/backup/log
basepath_databackup= /usr/sap/SI2/HDB02/backup/data
enable_auto_log_backup = yes
log_backup_timeout_s = 900
log_mode = normal
    
por Sudheer Chigullapally 03.11.2015 / 17:30

1 resposta

0

Aqui está uma versão perl que usa o módulo Config::Tiny extremamente simples.

#! /usr/bin/perl

use Config::Tiny;
use strict;

my $cfg = Config::Tiny->read( './backup.ini' );

# create a hash containing changes to [backup]
my %B = ('data_backup_parameter_file' => '/usr/sap/SI1/SYS/global/hdb/opt/hdbconfig/param',
         'log_backup_parameter_file' => '/usr/sap/SI1/SYS/global/hdb/opt/hdbconfig/param',
         'log_backup_using_backint' => 'true',
);

# loop through the hash and add them to the .ini stored in $cfg
foreach my $b (keys %B) {
   $cfg->{'backup'}->{$b} = $B{$b};
};

# create a hash containing changes to [persistence]
my %P = ('basepath_logbackup' => '/usr/sap/SI2/HDB02/backup/log',
         'basepath_databackup' => '/usr/sap/SI2/HDB02/backup/data',
         'enable_auto_log_backup' => 'yes',
);

# loop through the hash and add them to the .ini stored in $cfg
foreach my $p (keys %P) {
   $cfg->{'persistence'}->{$p} = $P{$p};
};


$cfg->write( 'new.ini' );

Config::Tiny é empacotado para o Debian (e derivados), Fedora, Centos, OpenSuSE e outras distribuições, sendo facilmente instalado usando as ferramentas apropriadas de gerenciamento de pacotes. Em outros sistemas, instale com o CPAN.

Existem vários outros módulos perl para trabalhar com arquivos .ini, alguns com mais recursos, alguns que adotam uma abordagem mais orientada a objetos. Config::Tiny apenas funciona com um hash e não requer a leitura de páginas de manual ou de manualização tanto quanto as mais complexas, então é bom para uma tarefa simples como essa.

    
por 04.11.2015 / 21:50

Tags