for*_*are 81 less grep bash logs
我目前正在筛选许多不熟悉的日志以寻找一些问题。我查看的第一个文件是 Events.log,我得到了至少三个页面,less
其中似乎在不同时间显示相同的事件 - 一个看起来相当温和的事件。我想过滤掉这个事件,目前我退出less
并做一些类似的事情
grep -v "event text" Events.log | less
Run Code Online (Sandbox Code Playgroud)
这现在带来了一些我也想过滤掉的其他常见的、无趣的事件。有没有一种方法可以让我grep -v
里面的less
?而不是必须做
egrep -v "event text|something else|the other thing|foo|bar" Events.log | less
Run Code Online (Sandbox Code Playgroud)
在查看任何类型的日志文件时,它给我的印象是一个有用的功能——如果less
不是这个工具,是否还有另一个具有我所寻求的品质?只是一个less
内置grep
.
ori*_*ion 129
less
有非常强大的模式匹配。从手册页:
&pattern
只显示匹配的行
pattern
;pattern
不显示不匹配的行。如果pattern
为空(如果您&
立即键入后跟ENTER),则关闭任何过滤,并显示所有行。当过滤生效时,提示开头会显示一个与号,以提醒文件中的某些行可能被隐藏。某些字符在
/
命令† 中很特殊:
^N
或者!
只显示不匹配的行
pattern
。^R
不要解释正则表达式元字符;也就是做一个简单的文字比较。
____________
†如果在pattern
;开头输入,某些字符是特殊字符。他们修改了搜索的类型,而不是成为pattern
.
???(当然^N
和分别^R
代表Ctrl+N
和Ctrl+ R。)?
因此,例如,&dns
将仅显示相匹配的图案线dns
,并且&!dns
将过滤掉(不包括)那些行,只显示不匹配的图案线条。
在/
命令的描述中注意到
这
pattern
是一个正则表达式,由您的系统提供的正则表达式库识别。
所以
ð[01]
? 将显示包含eth0
或的行eth1
&arp.*eth0
将显示包含arp
后跟的行eth0
&arp|dns
? 将显示包含arp
或的行dns
并且!
可以反转上述任何一个。因此,您希望用于问题示例的命令是:
&!event text|something else|the other thing|foo|bar
Run Code Online (Sandbox Code Playgroud)
还可以使用和
进行搜索(和/转到下一个/上一个)。/pattern
?pattern
n
N
G-M*_*ca' 10
/pattern
向前查找该文件中ñ含有n行
pattern
? ň?†默认为 1。这pattern
是一个正则表达式,由您的系统提供的正则表达式库识别。搜索从显示的第二行开始(但请参阅-a
和-j
选项,它们改变了这一点)。如果在
pattern
;开头输入某些字符是特殊的 他们修改搜索类型,而不是成为以下内容的一部分pattern
:
^N
或者!
搜索不匹配的行
pattern
。^E
或者*
搜索多个文件。也就是说,如果搜索到当前文件的 END 没有找到匹配项,则在命令行列表中的下一个文件中继续搜索。
^F
或者@
从命令行列表中第一个文件的第一行开始搜索,而不管当前屏幕上显示的内容
-a
或 或-j
选项的设置。^K
突出显示与
pattern
当前屏幕上匹配的任何文本,但不要移动到第一个匹配项(保持当前位置)。^R
不要解释正则表达式元字符;也就是做一个简单的文字比较。
____________
†命令前面可能有一个十进制数,在描述中称为N …
???(当然^N
and^E
等,代表
Ctrl+N和Ctrl+E等)?
事实证明,
并且工作得很好。例如,命令&pattern
/pattern
&!arp|dns
Enter/
Ctrl+Kfail|fatal|fault|sd[a-z][0-9]
Enter以任何顺序输入,将隐藏(排除)包含所有行arp
或dns
(像grep -v
),然后在剩下的线条,彰显的所有出现fail
,fatal
,fault
或任何看起来像一个SCSI设备的名称(sd[a-z][0-9]
)。请注意,将不会显示包含arp
或dns
以及fail
或任何其他危险词的行。