Sim, sed
parece a escolha certa:
sed -i.bak '/^\[keyword1\]/aparam = value\nparam = other' your.file
awk
pode fazer isso, exceto a parte de edição no local:
awk '1;/^\[keyword1\]/{print"param = value";print"param = other"}' your.file > new.file
Se você não se importa em usar uma arma grande como perl
para uma tarefa tão pequena:
perl -i.bak -pe '$_.="param = value\nparam = other\n"if/^\[keyword1\]/' your.file
O mais recente funcionará em ruby
com 1 modificação de caractere:
ruby -i.bak -pe '$_+="param = value\nparam = other\n"if/^\[keyword1\]/' your.file
A solução python
é um pouco demorada (provavelmente piorada pela fraqueza do meu conhecimento):
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
Novamente sem a edição no local, mas bash
e ksh
também podem fazer isso:
while IFS='' read -r line; do
echo "$line"
[[ "$line" == '[keyword1]' ]] && {
echo "param = value"
echo "param = other"
}
done < your.file > new.file
Com ed
é simples de editar no local, mas não sei como criar backup:
ed -s your.file <<< $'/^\[keyword1\]/a\nparam = value\nparam = other\n.\nwq'