Bash,查找模式,在#前面添加匹配,在下面插入新字符串

时间:2012-02-16 01:32:28

标签: bash

正如主题所说,我正试图想出一个使用bash更新配置文件的好方法。计划是查找模式,在#前面添加任何匹配项,然后在下面插入一个新字符串。例如

之前的

文件:

key1=value1
key2=value2
key3=value3

Bash更新key2,make key2 = test

后文件:

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

4 个答案:

答案 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