regex - 等效于 Ack : AND operator + -interpret switch 中的 "mdfind"查询

标签 regex linux macos ack

我正在尝试修改 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/

相关文章:

c - CLOCK_MONOTONIC 和 CLOCK_MONOTONIC_COARSE 是否具有相同的基数?

macos - OS X 应用程序在两台显示器设置上以全屏模式运行

javascript - JS 中的 native OS X 应用程序?

Javascript - 正则表达式 : How to replace id in string with the same id plus number?

java - 在java中将字符串转换为int

javascript - 可以获取两个特定正则表达式匹配之间的文本吗?

正则表达式替换文件内容并删除不匹配的行

linux - awk 或 sed 删除每行文件中出现 x 之后的所有文本

linux - 高并发异步asp.net核心应用程序中TaskScheduler的OutOfMemoryException

java - 适用于 OS X、Linux 的更好的 JFileChooser 替代品?