假设我有一个包含以下内容的foo.txt文件:
[2010-11-13 12:00:02,656]
[2010-11-13 12:00:02,701]
[2010-11-13 12:00:02,902]
Run Code Online (Sandbox Code Playgroud)
当我ack使用以下日期部分时,它的工作原理是:
ack "(?P<foo>\d{4}-\d{2}-\d{2})" foo.txt --output "\$1"
2010-11-13
2010-11-13
2010-11-13
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用--output命名组"foo"时,我无法让它工作:
ack "(?P<foo>\d{4}-\d{2}-\d{2})" foo.txt --output "(?P=foo)"
(?=foo)
(?=foo)
(?=foo)
Run Code Online (Sandbox Code Playgroud)
任何帮助都非常感激.非常感谢.
cjm*_*cjm 18
ack "(?P<foo>\d{4}-\d{2}-\d{2})" foo.txt --output "\$+{foo}"
Run Code Online (Sandbox Code Playgroud)
(?P=foo)只能在正则表达式中使用(它是命名的等价物\1). $+{foo}是命名的等价物$1.
此外,对于大多数shell,单引号将帮助您避免额外的反斜杠:
ack '(?P<foo>\d{4}-\d{2}-\d{2})' foo.txt --output '$+{foo}'
Run Code Online (Sandbox Code Playgroud)