Как я могу отредактировать INI-файл с помощью сценария оболочки Korn? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть файл .ini, который выглядит следующим образом

[test]
  foo=bar

Мой файл называется test.ini

Я хочу написать оболочку korn, которая изменит мой файл test.iniдля следующего

    [test]
      foo=barzar

Я пробовал следующее, но оно не работает.

sed -i.bak '/^\[test]/,/^\[/{s/^foo[[:space:]]*=.*/foo = foobarbaz/}' test.ini

У кого-нибудь есть предложения?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Предполагая, что вы хотите изменить только foo=something в блоке [test]:

sed -i.bak '/^\[test\]/,/^\s*foo\s*=/ s/^\s*foo\s*=.*/ foo = barzar/' test.ini

Первая часть представляет собой адрес строк между [test] и строкойсодержащий foo = с необязательными пробелами перед foo и после foo.Подстановка произойдет только здесь.
Первая часть: /^\[test\]/,/^\s*foo\s*=/

Вторая часть - это замена с вставкой пробелов перед foo, после foo и после =:
Вторая часть: s/^\s*foo\s*=.*/ foo = barzar/

0 голосов
/ 21 февраля 2019

попробуй:

perl -p -i -e 's/(foo=bar)/$1zar/g' test.ini
...