1

我正在尝试为我的 Linux 机器修改 Brett Terpstra 方便的QuickQuestion 脚本。Ack 等效于以下mdfind命令:

mdfind -onlyin "$NOTESDIR" "filename:.$NOTESEXT AND filename:\"$NOTESPRE\" AND ${INPUT%\?}"
...
echo "`mdfind -onlyin \"$NOTESDIR\" -interpret \"filename:.$NOTESEXT AND filename:$NOTESPRE AND ${INPUT%\?}\"`"

我似乎无法正确理解 AND 部分。我知道必须使用括号,因为 Ack 是 Perl。但是例如(?="$NOTESPRE")(?="$INPUT")给出了错误。

此外,我不确定如何处理-interpret第二行的开关。

对如此简单的查询感到困惑......感谢您的帮助!

4

1 回答 1

0

双重前瞻需要考虑一系列因素,因此您需要在其模式中添加通配符,例如:

>>echo "foo bar \$NOTESPRE \$INPUT baz" | ack "^(?=.*$NOTESPRE)(?=.*$INPUT).*$"

返回:

foo bar $NOTESPRE $INPUT baz

如果您需要在特定目录中搜​​索包含此行的文件,只需在命令行上指定目录:

ack "^(?=.*$NOTESPRE)(?=.*$INPUT).*$" path\to\directoryToSearch

-interpret在正则表达式中没有直接并行。

于 2019-06-27T04:28:30.237 回答