我想从服务器日志中获取“ GET ”查询。
例如,这是服务器日志
1.0.0.127.in-addr.arpa - - [10/Jun/2012 15:32:27] code 404, message File not fo$
1.0.0.127.in-addr.arpa - - [10/Jun/2012 15:32:27] "GET /hello HTTP/1.1" 404 -
1.0.0.127.in-addr.arpa - - [10/Jun/2012 15:41:57] code 404, message File not fo$
1.0.0.127.in-addr.arpa - - [10/Jun/2012 15:41:57] "GET /ss HTTP/1.1" 404 -
当我尝试使用简单的grep或awk时,
Adi:~ adi$ awk '/GET/, /HTTP/' serverlogs.txt
它发出
1.0.0.127.in-addr.arpa - - [10/Jun/2012 15:32:27] "GET /hello HTTP/1.1" 404 -
1.0.0.127.in-addr.arpa - - [10/Jun/2012 15:41:57] "GET /ss HTTP/1.1" 404 -
我只想显示: hello 和 ss
有什么办法可以做到吗?
假设您有gnu grep,则可以使用perl样式的regex进行正向查找:
grep -oP '(?<=GET\s/)\w+' file
如果您没有gnu grep,那么我建议您只使用sed:
sed -n '/^.*GET[[:space:]]\{1,\}\/\([-_[:alnum:]]\{1,\}\).*$/s//\1/p' file
如果您碰巧使用过gnu sed,可以将其大大简化:
sed -n '/^.*GET\s\+\/\(\w\+\).*$/s//\1/p' file
最重要的是,您当然不需要管道即可完成此操作。 grep
或sed
一个就足够了。
问题内容: 我试图用来匹配包含两个不同字符串的行。我尝试了以下内容,但是这匹配包含 string1 或 string2的 行,而不是我想要的行。 那么,如何只与包含 两个字符串 的行匹配? 问题答案: 您可以使用 要么,
问题内容: 我必须解析一个非常大的文件,并且我想使用命令grep(或任何其他工具)。 我想在每个日志行中搜索该单词,然后在每个匹配行的上方和下方以及匹配行的行上进行打印。 例如: 我需要打印: 问题答案: grep的选项将在之后给您一行;会给你一行 并将两者结合起来,可以使您之前和之后的一行相同。
本文向大家介绍grep 匹配整个单词,包括了grep 匹配整个单词的使用技巧和注意事项,需要的朋友参考一下 示例 给定一个文件sample: grep“ hello”的法线返回: 使用-w允许选择包含构成整个单词的匹配项的行:
问题内容: 我如何在scala switch语句中执行一个case块后开始执行另一个case块的语句。(在Java中:不间断的情况)。 感谢帮助! 问题答案: 如果无法使用,可以使用一系列操作来解决,例如:
本文向大家介绍grep 仅打印行的匹配部分,包括了grep 仅打印行的匹配部分的使用技巧和注意事项,需要的朋友参考一下 示例
问题内容: 假设您有两个2D数组A和B,并且要检查B中包含A行的位置。如何使用numpy最有效地做到这一点? 例如 我知道如何使用(检查2d numpy数组中的成员资格 )检查A的行是否在B中,但这不会产生索引图。 该映射的目的是(最终)基于某些列将两个数组合并在一起。 当然,可以逐行执行此操作,但这效率非常低,因为我的数组具有形状(50 Mio.,20)。 一种替代方法是使用pandas mer