我正在尝试为我的Linux机器修改Brett Terpstra的方便QuickQuestion script。什么是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
开关。
这么简单的查询感到困惑......感谢您的帮助!
答案 0 :(得分:0)
双前行需要考虑很多因素,因此您需要在通配符模式中添加通配符,例如:
>>echo "foo bar \$NOTESPRE \$INPUT baz" | ack "^(?=.*$NOTESPRE)(?=.*$INPUT).*$"
返回:
foo bar $NOTESPRE $INPUT baz
如果需要在特定目录中搜索包含此行的文件,只需在命令行上指定目录:
ack "^(?=.*$NOTESPRE)(?=.*$INPUT).*$" path\to\directoryToSearch
-interpret
在正则表达式中没有直接并行。