2012-02-16 2 views
1

Как говорится в этом вопросе, я пытаюсь придумать хороший способ обновления файла конфигурации с помощью bash. План состоит в том, чтобы искать шаблон, добавлять любые совпадения с #, а затем вставлять новую строку ниже. НапримерBash, найдите шаблон, добавьте совпадение с #, вставьте новую строку ниже

файл перед:

key1=value1 
key2=value2 
key3=value3 

Bash обновить key2, сделать key2 = тест

файл после того, как:

key1=value1 
#key2=value2 
key2=test 
key3=value3 

ответ

2

Вот Баш скрипт, чтобы сделать это

#!/bin/bash 
sed -i -r -e "s/^($2)=(.*)$/#$2=\2\n$2=$3/" $1 

Вы то могли бы использовать его, как это выполнить свой пример:

./update configfile key2 test 
2
 
$ sed '/key2/{ s/^/#/; a\ 
key2=test 
}' input 
0

Это не партия, пока вы не сделаете это в awk

awk '$0 ~ key{$0="#" $0 "\n" key "test"}1' key="key2=" infile 
0

Это может работать для вас:

cat <<! >changes.txt 
> key2=test 
> ! 
sed 's|\([^=]*\).*|/^\1/s/.*/#\&\\n&/|' changes.txt | sed -i -f - file 
cat file 
key1=value1 
#key2=value2 
key2=test 
key3=value3 
Смежные вопросы