我需要编辑以下文件中[token]
部分的提供者行:
$ cat test.txt
[test]
#provider = keystone.token.providers.uuid.Provider
#driver = keystone.token.persistence.backends.sql.Token
#caching = true
#cache_time = <None>
[token]
#provider = keystone.token.providers.uuid.Provider
#driver = keystone.token.persistence.backends.sql.Token
#caching = true
#cache_time = <None>
[trust]
#provider = keystone.token.providers.uuid.Provider
#driver = keystone.token.persistence.backends.sql.Token
#caching = true
#cache_time = <None>
我试过了:
sed -e '/^\[token\]/s/^\#provider.*/provider = keystone.token.providers.uuid.Provider/' test.txt
但是没有对文件进行任何更改。
如何更改脚本以编辑正确的部分?
答案 0 :(得分:1)
即使awk对于理解也更好更清楚,不过在sed中
sed -i.bak '/\[token\]/,+2 s/#//' test.txt
用,+ 2你在范围内添加+2行
答案 1 :(得分:0)
以下是使用awk的方法:
RS
取消设置记录分隔符[token]
意味着awk一次读取一个块。 f
匹配时,会设置标记f
。设置f
并且替换成功后,1
未设置,因此不会进行其他替换。最后的ORS
是常用的简写,表示每行都打印出来。 {{1}}是输出记录分隔符,它设置为两个换行符,因此不会丢失每个块之间的空格。