我有应该是文本的二进制文件(它们是导出的日志),但我无法用 less 打开它(它看起来很丑 - 它看起来像一个二进制文件)。我发现我可以用 vi 打开它,我可以 cat 它(你会看到实际的日志),但我真正想做的是通过它们 grep(不必用 vi 打开每一个然后执行搜索)。有没有办法让我做到这一点?
使用 grep 仅获取文件中正则表达式的最终匹配项的最佳方法是什么?
另外,是否可以从文件末尾而不是开头开始 grepping 并在找到第一个匹配项时停止?
我可以使用日志分析器,但通常我需要解析最近的网络日志以查看当前发生的情况。
我有时会做一些事情,比如找出请求某个文件的前 10 个 ip
cat foo.log | grep request_to_file_foo | awk '{print $1}' | sort -n | uniq -c | sort -rn | head
Run Code Online (Sandbox Code Playgroud)
你的工具箱里有什么?
$ ps | grep django
28006 ttys004 0:01.12 /usr/bin/python bin/django celeryd --beat
51393 ttys005 0:01.45 /usr/bin/python bin/django celeryd -l INFO
51472 ttys005 0:01.29 /usr/bin/python bin/django celeryd -l INFO
51510 ttys005 0:01.89 /usr/bin/python bin/django celeryd -l INFO
51801 ttys005 0:01.83 /usr/bin/python bin/django celeryd -l INFO
53470 ttys005 0:03.97 /usr/bin/python bin/django celeryd -l INFO
53780 ttys005 0:00.00 grep django
Run Code Online (Sandbox Code Playgroud)
有没有办法防止报告最后一个进程(即与我的 ps 命令同时启动的 grep)?
(我开始尝试想出一个匹配文字但不匹配自身的正则表达式,但这似乎,嗯,不是正确的方法......)
鉴于此示例文件夹结构:
/folder1/file1.txt /folder1/file2.djd /folder2/file3.txt /folder2/file2.fha
如何*.txt使用grep“/”对所有文件进行递归文本搜索?
("grep -r <pattern> *.txt"从“/”运行时失败,因为.txt该文件夹中没有文件。)
是否有任何 linux 命令可以从可执行文件或其他二进制文件中提取所有 ascii 字符串?我想我可以用 grep 来完成,但我记得在某个地方听说过这样的命令存在?
我想要tail -f我的日志。但是,我想过滤掉所有包含以下单词的内容:
“ELB”、“Pingdom”、“健康”
我需要在一个巨大的日志文件(超过 14 GB)中搜索一些东西。我很确定它在最后 4 GB 左右。
有没有办法跳过第一个 X GB 来加快速度?
有什么办法可以pgrep让我知道每个进程的所有信息ps吗?我知道我可以ps通过管道,grep但这需要大量打字,而且它还为我提供了grep我不想要的流程本身。
我的一个常见做法是对某种类型的所有文件执行 grep,例如,找到所有包含“rumpus”一词的 HTML 文件。为此,我使用
find /path/to -name "*.html" | xargs grep -l "rumpus"
Run Code Online (Sandbox Code Playgroud)
有时,find会返回名称中带有空格的文件,例如my new file.html. 但是,当xargs将此传递给grep时,我收到以下错误:
grep: /path/to/bad/file/my: No such file or directory
grep: new: No such file or directory
grep: file.html: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我可以看到这里发生了什么:管道或xargs正在将空格视为文件之间的分隔符。但是,对于我的一生,我无法弄清楚如何防止这种行为。可以用find+完成xargs吗?还是我必须使用完全不同的命令?