заменить строку в одном файле из строки в другом файле в BASH - PullRequest
0 голосов
/ 08 ноября 2018

у меня config_file.txt имеет следующую структуру

host ='myserver'
login = 'vasya'
password = 'pupkin'

и code.scala имеет следующую структуру

var_host = '***HOST***'
var_login = '***LOGIN***'
var_password = '***PASS***'

оба файла находятся в одном каталоге. мне нужно взять соответствующую строку в файле конфигурации и заменить ей соответствующую строку в файле кода Я смотрел на функцию grep, но нет. знаете, есть ли способ сделать то, что мне нужно, или есть другие функции, которые можно использовать для выполнения такой работы?

Спасибо!

1 Ответ

0 голосов
/ 08 ноября 2018

Вот небольшой скрипт на Perl, который делает это:

#!/usr/bin/perl -pi
use warnings;
use strict;
use Getopt::Long;

our %vars;

BEGIN {
  my $config_file = "config_file.txt";
  GetOptions("config=s" => \$config_file) or die "Invalid argument\n";
  open my $config, "<", $config_file or die "Unable to open $config_file\n";
  while (<$config>) {
    if (/^(\w+)\s*=\s*('.*')/) {
      $vars{$1} = $2;
    }
  }
  close $config;
}

if (/^var_(\w+)\s*=/) {
  $_ = "var_$1 = $vars{$1}\n" if exists $vars{$1}
}

Беги так:

$ perl set_vars.pl code.scala

и задайте имя файла конфигурации, отличное от «config_file.txt», с помощью

$ perl set_vars.pl --config=foo.txt code.scala
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...