正如主题所说,我正试图想出一个使用bash更新配置文件的好方法。计划是查找模式,在#前面添加任何匹配项,然后在下面插入一个新字符串。例如
之前的文件:
key1=value1
key2=value2
key3=value3
Bash更新key2,make key2 = test
后文件:
key1=value1
#key2=value2
key2=test
key3=value3
答案 0 :(得分:2)
这是一个用于执行该操作的bash脚本
#!/bin/bash
sed -i -r -e "s/^($2)=(.*)$/#$2=\2\n$2=$3/" $1
然后您可以像这样使用它来执行您的示例:
./update configfile key2 test
答案 1 :(得分:2)
$ sed '/key2/{ s/^/#/; a\ key2=test }' input
答案 2 :(得分:0)
在awk
awk '$0 ~ key{$0="#" $0 "\n" key "test"}1' key="key2=" infile
答案 3 :(得分: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