我有一个目录,其中包含数百个使用YAML主题发布的Weblog。每个前题块都有一行以date:
开头的行,其后是YYYY-MM-DD格式的日期。一些日期后跟时间,即21:09。某些日期用单引号引起来,即“ YYYY-MM-DD”。
我想将所有date:
行转换为以下格式:date: 'YYYY-MM-DD'
。
一些示例日期行:
date: '2009-11-23'
date: 2013-01-20 20:37
date: 2013-01-21 1:40
我有以下命令:
find . -type file -exec sed -i.bak -e "s/date: (')?([0-9]{4}-[0-9]{1,2}-[0-9]{1,2})(')?( .*)?/date: \"$2\"/g" {} \;
应创建四个组:
该命令运行时未返回任何错误,但日期行均未更改。我用http://rubular.com测试了正则表达式模式,这似乎是正确的。
我正在使用macOS,因此使用了find
和sed
的变体。由于除了目录中每个文件的.bak
文件之外没有输出任何信息,所以我无法确定我的正则表达式是否失败或替换失败。
如何调整此命令使其起作用?
答案 0 :(得分:0)
Answer.objects.filter(answer__contains=response).exists()
要求您在正则表达式中转义许多特殊字符,包括sed
。此外,?(){}
使用sed
表示替换而不是\1
。您也可以通过删除$1
部分来简化正则表达式,就像在搜索和替换中一样。这应该起作用:
date: