假设我有一个包含以下内容的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)
任何帮助都非常感激。非常感谢。
答案 0 :(得分:18)
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}'