如何创建Linux脚本(bash,sed,awk ...)以在配置文件的特定部分添加一行

时间:2015-01-12 19:39:45

标签: bash sed

我需要使用Linux常用工具(Bash,awk,sed,...)创建一个脚本,以像INI这样的样式编辑配置文件,即:

[sectionA]
var1=x
var2=y
#...

[sectionB]
var1=x
var2=y
#...

[sectionC]
var1=x
var2=y
#...

我需要在特定部分添加一行,即找到以行开头的部分" [sectionX]"并在下一个新行或EOF之前附加一行。我怎么能这样做?

4 个答案:

答案 0 :(得分:3)

sed -i '/^\[sectionB\]/a\append your line here' my_file

sed -i '/^\[sectionB\]/s/$/\nappend your line here/' my_file

示例使用上面的命令行

[sectionB]追加一行

输出

[sectionA]
var1=x
var2=y
#...

[sectionB]
append your line here
var1=x
var2=y
#...

[sectionC]
var1=x
var2=y
#...

答案 1 :(得分:1)

sed -e 's/\(\[sectionB\]\)/\1\nvar_new=value/' -i file.ini

请注意,如果file.ini已经有一行定义var_new=something_else,则需要单独删除它。

答案 2 :(得分:0)

您可以使用gnu awk

执行此操作
awk -vRS= -vORS="\n\n" -F"\n" -vOFS="\n" '/sectionB/ {$1=$1"\nnew=42"}1' file
[sectionA]
var1=x
var2=y
#...

[sectionB]
new=42
var1=x
var2=y
#...

[sectionC]
var1=x
var2=y
#...

搜索sectionB,然后在该部分添加new=42

答案 3 :(得分:0)

您可以使用crudini更加健壮/轻松地编辑文件

crudini --set file 'sectionB' new 42