从下面的aws配置文件中,我想仅在默认部分替换aws区域:
[proj1]
output = json
region = aws_region
[default]
output = json
region = us-east-1
[proj2]
output = json
region = us-east-1
[proj2-frankfurt]
output = json
region = eu-central-1
从这个命令,我到达检索[默认]部分的行号位置:
grep -n“default”〜/ .aws / config | awk -F“:”'{print $ 1}'
结果是:5(如预期的那样)
所以,从这个输出(行号),我想用sed替换(仅)第一次出现而不是用“eu-central-1”取代“aws_region”,例如做类似的事情:
sed -i' 7 ,/ aws_region / s // eu-central-1 /'〜/ .aws / config
其中 7 是我上一个命令的输出
如何在一次操作中完成此操作?
答案 0 :(得分:2)
使用GNU sed:
sed '/^\[default\]/,/^$/{ s/region = .*/region = foobar/ }' file
输出到标准输出:
[proj1] output = json region = aws_region [default] output = json region = foobar [proj2] output = json region = us-east-1 [proj2-frankfurt] output = json region = eu-central-1
如果您要“就地”修改文件,请使用sed的选项-i
。
请参阅:man sed
和The Stack Overflow Regular Expressions FAQ