Добавление 2 строк в строке файла конфигурации текстового файла

Слияние sed, это должно добиться цели:

FILE="$(basename "$1" | sed s/\.jpeg$/.jpg/)"

(Это точно не отвечает на Ваш вопрос, потому что я не могу; не уверенный, если это возможно.)

2
09.11.2011, 13:39
2 ответа

Да, sed походит на правильный выбор:

sed -i.bak '/^\[keyword1\]/aparam = value\nparam = other' your.file

awk может сделать это, за исключением оперативной части редактирования:

awk '1;/^\[keyword1\]/{print"param = value";print"param = other"}' your.file > new.file

Если Вы не заботитесь об использовании большой пушки как perl для такой небольшой задачи:

perl -i.bak -pe '$_.="param = value\nparam = other\n"if/^\[keyword1\]/' your.file

Более поздний будет работать в ruby с 1 символьной модификацией:

ruby -i.bak -pe '$_+="param = value\nparam = other\n"if/^\[keyword1\]/' your.file

python решение так или иначе долго (вероятно, ухудшенный слабостью моего знания):

python -c 'import sys,fileinput;[sys.stdout.write(line+("param = value\nparam = other\n" if line=="[keyword1]\n" else "")) for line in fileinput.input(inplace=1,backup=".bak")]' your.file

Снова без оперативного редактирования, но bash и ksh может сделать это также:

while IFS='' read -r line; do
  echo "$line"
  [[ "$line" == '[keyword1]' ]] && {
    echo "param = value"
    echo "param = other"
  }
done < your.file > new.file

С ed просто отредактировать оперативный, но я не знаю способа создать резервное копирование:

ed -s your.file <<< $'/^\[keyword1\]/a\nparam = value\nparam = other\n.\nwq'
7
27.01.2020, 21:53
  • 1
    Вы - мой персональный герой Wiki! :) Спасибо! –  ztank1013 09.11.2011, 15:37

Если Вы используете vim как Ваш редактор, можно настроить сокращения в Вашем .vimrc следующим образом:

:abbr key1 [keyword1]^M^Iparam1 = value1^M^Iparam2 = value2^M^Iparam3 = value3^M
:abbr key2 [keyword2]^M^Iparam4 = value4^M^Iparam5 = value5^M

Теперь, в любом файле, в режиме вставки, если Вы вводите key1, и нажмите Enter, Вы будете видеть:

[keyword1]
       param1 = value1
       param2 = value2
       param3 = value3

Если это - вид вещи, Вы часто делаете, и повторяющимся образом, vim сокращения могут упростить боль.

0
27.01.2020, 21:53

Теги

Похожие вопросы