我正在尝试修改 Brett Terpstra 的得心应手 QuickQuestion script对于我的 Linux 机器。 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
开关。
对如此简单的查询感到困惑...感谢您的帮助!
最佳答案
双重先行需要考虑一系列的事情,所以你需要在它们的模式中添加通配符,例如:
>>echo "foo bar \$NOTESPRE \$INPUT baz" | ack "^(?=.*$NOTESPRE)(?=.*$INPUT).*$"
返回:
foo bar $NOTESPRE $INPUT baz
如果您需要在特定目录中搜索包含此行的文件,只需在命令行中指定目录即可:
ack "^(?=.*$NOTESPRE)(?=.*$INPUT).*$" path\to\directoryToSearch
-interpret
在正则表达式中没有直接并行。
关于regex - 等效于 Ack : AND operator + -interpret switch 中的 "mdfind"查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17623280/