只能通过匹配特定“glob”模式的文件进行确认搜索(例如:在所有名为“bar*.c”的文件中搜索 foo)。命令
ack foo "bar*.c"
Run Code Online (Sandbox Code Playgroud)
仅适用于当前目录。
注意:我知道 find -exec 是可能的:
find . -name "bar*.c" -type f -exec ack foo {} +
Run Code Online (Sandbox Code Playgroud)
但我想要一个小而简单的 ack 命令,因为 find 不会跳过版本控制目录。
有没有办法告诉ack
只搜索当前文件夹上的文本?(或指定一个max-depth
级别?)和grep
?
我正在使用 ack 来搜索字符串。当我在没有文件参数的情况下运行它时,我得到行号:
$> ack function
themes/README.txt
7:Drupal's sub-theme functionality to ensure easy maintenance and upgrades.
sites/default/default.services.yml
48: # - The dump() function can be used in Twig templates to output information
...
Run Code Online (Sandbox Code Playgroud)
但是当我尝试指定一个文件时,我没有得到行号。
$> ack function themes/README.txt
Drupal's sub-theme functionality to ensure easy maintenance and upgrades.
Run Code Online (Sandbox Code Playgroud)
我在谷歌上搜索了一些开关,但没有找到结果。如何获得确认以显示单个文件结果的行号?
如何使用v2搜索当前目录中的所有文件(包括二进制文件)ack
?
我想做和做一样的事情ack 'foo' **
,但只是有一个标志,所以如果我想搜索特定目录中的所有文件而不附加**
.
ack 'foo'
和之间的区别ack 'foo' **
:
$ mkdir test && cd test
$ printf '\x00\x01foo1\x00' > test1
$ printf 'foo2' > test2
$ ack 'foo'
test2
1:foo2
$ ack 'foo' **
test1
1:foo1
test2
1:foo2
Run Code Online (Sandbox Code Playgroud) 我想在我的目录中搜索文件中的“foo”,但我有这些巨大的 sql 文件。如何使用 ack-grep 排除这些文件类型或大于 3MB 的文件?另外,这将如何用 grep 完成?
有一个选项--ignore
允许指定要忽略的文件。目前我只能通过执行来忽略多个文件--ignore file1 --ignore file2.......
尝试使用--ignore "*assets*|*scripts*"
没有任何作用。那么有什么我不知道的问题吗?
有没有办法对ack
按修改日期找到的结果进行排序?(最好在结果旁边显示日期?)。它看起来没有ack
日期选项,但以防万一。
如果使用 无法做到这一点ack
,那么如何grep
或使用工具组合?
我想我可能刚刚搜索错了,但我没有找到任何答案。如果有重复,请告诉我,我可以将其删除。
我正在使用ack
(链接),它在引擎盖下有 Perl 5,来获取 n-gram - 特别是高阶 n-gram。我可以使用我知道的语法(基本上最多$9
)获得最多 9 克,但我无法获得 10 克。使用$10
只是给了我$1
一个0
之后。之类的东西$(10)
,并${10}
没有解决问题。我对使用语言建模工具包的解决方案不感兴趣,我想使用ack
.
我使用的一个数据集是马克吐温的全集
( wget http://www.gutenberg.org/cache/epub/3200/pg3200.txt && mv pg3200.txt TWAIN_Mark_complete_orig.txt
).
我已经解析干净了(请参阅文章末尾的解析注释)并将解析结果保存为TWAIN_Mark_complete_parsed.txt
.
我从 2 克中得到了很好的结果,代码和部分结果是
time cat TWAIN_Mark_complete_parsed.txt | \
ack '(\S+) +(?=(\S+) +)' \
--output '$1 $2' | \
sort | uniq -c | \
sort -rn > Twain_2grams.txt
## `time` info not shown …
Run Code Online (Sandbox Code Playgroud) 手册说“该--text
选项已被删除。”。它将--type
文本设置为文本,即ack
搜索所有文本文件而不管它们的语义类别(即在 *.php 文件、*.txt 文件、*.cpp 文件等中)。如何在当前版本中获得这种行为ack
?
我想删除所有包含 string 的文本foo
。
我可以通过 列出所有文件ack-grep foo
,但我找不到删除所有文件的方法,例如像这样的-exec rm {}
选项find
.
如何删除包含特定字符串的所有文件?
我需要匹配这个: (tt\d{1,10}) 在一个文件中以 txt 结尾。
我试过 grep 和 ack-grep 但没有结果。
ack-grep -G \.txt$ -g "(tt\d{1,10})"
Run Code Online (Sandbox Code Playgroud)