我有一个名为config.properties
的文件,其中包含以下文字:
cat config.properties
// a lot of data
com.enterprise.project.AERO_CARRIERS = LA|LP|XL|4M|LU|4C
//more data
我的目标是保持相同的数据,但增加更多。对于此示例,我想添加此变量|JJ|PZ
的赋值结果:
cat config.properties
// a lot of data
com.enterprise.project.AERO_CARRIERS = LA|LP|XL|4M|LU|4C|JJ|PZ
//more data
我一直在使用的命令是:
sed 's/\(com\.enterprise\.project\.AERO_CARRIERS\s*\=\s*.+\)/\1\|JJ\|PZ/g' config.properties
但这不起作用。 我做错了什么?
答案 0 :(得分:1)
作为使用sed
等流编辑器的替代方法,只需使用ed
中的原生文本编辑器,UNIX
- 天进行就地搜索和更换。使用的选项(-s
)符合POSIX
,因此没有可移植性问题,
printf '%s\n' ",g/com.enterprise.project.AERO_CARRIERS/ s/$/\|JJ\|PZ/g" w q | ed -s -- inputFile
部分,g/com.enterprise.project.AERO_CARRIERS/
搜索包含模式的行,部分s/$/\|JJ\|PZ/g
将|JJ|PZ
追加到该行的末尾,w q
写入并保存文件, -place。
答案 1 :(得分:0)
class MyFormatter(logging.Formatter):
def format(self,record):
msg = super(MyFormatter, self).format(record)
return plain(msg)
和\s
不符合POSIX:
您可以使用+
和空格字符(包括换行符)与[[:blank:]]
匹配空格和制表符。
[[:space:]]
可以替换为.+
或.\{1,\}
并且您不需要在此处使用反向引用,而是使用..*
来输出与您的模式匹配的行:
&
答案 2 :(得分:0)
您可以先匹配:
sed '/com\.enterprise\.project\.AERO_CARRIERS\s*\=\s*.\+/ s/$/|JJ|PZ/g' config.properties