14

假设我有一个包含以下内容的 foo.txt 文件:

[2010-11-13 12:00:02,656]
[2010-11-13 12:00:02,701]
[2010-11-13 12:00:02,902]

当我ack使用以下日期部分时,它可以工作:

ack "(?P<foo>\d{4}-\d{2}-\d{2})" foo.txt --output "\$1"

2010-11-13
2010-11-13
2010-11-13

但是当我尝试--output与命名组“foo”一起使用时,我无法让它工作:

ack "(?P<foo>\d{4}-\d{2}-\d{2})" foo.txt --output "(?P=foo)"

(?=foo)
(?=foo)
(?=foo)

任何帮助都非常感谢。非常感谢。

4

1 回答 1

19
ack "(?P<foo>\d{4}-\d{2}-\d{2})" foo.txt --output "\$+{foo}"

(?P=foo)仅适用正则表达式(它是 的命名等效项\1)。 $+{foo}是 的命名等价物$1

此外,对于大多数 shell,单引号将帮助您避免额外的反斜杠:

ack '(?P<foo>\d{4}-\d{2}-\d{2})' foo.txt --output '$+{foo}'
于 2010-11-19T07:22:19.867 回答