linux:根据关键字或⽇期查⽇志
Q:Linux命令,根据关键字查询⽇志
A:1.单个⽂件可以使⽤vi或vim编辑器打开⽇志⽂件,使⽤编辑器⾥的查功能。在查看模式下,符号/后⾯跟关键字向下查,符号?后⾯跟关键字向上查,按n查下⼀个,按N查上⼀个。
2.多个⽂件可以使⽤grep命令,⽐如 grep ERROR /var/log/messages*。会把匹配到ERROR这个关键字的⾏和所在的⽇志⽂件直接输出到屏幕。
3.还可以使⽤cat命令后⾯使⽤grep过滤等⽅法,不如上⾯两个实⽤。上⾯两个较常⽤。
常⽤到的命令在这⾥记录⼀下:
1.VI:单个⽂件可以使⽤vi或vim编辑器打开⽇志⽂件,使⽤编辑器⾥的查功能。在查看模式下,符号/后⾯跟关键字向下查,符号?后⾯跟关键字向上查,按n查下⼀个,按N查上⼀个。
根据字符串查询⽇志中关键词出现的位置:cat -n ⽇志⽂件| grep 'keyword'
例:cat -n 1.log | grep 'keyword'
检索⽇志,并显⽰该条⽇志的前后N(10)⾏记录:cat ⽇志⽂件 | grep -n -B10 -A10 "关键字"
3.查看某段时间内的⽇志: sed -n '/起始时间/,/结束时间/p' ⽇志⽂件,
查看某段时间内的关键字⽇志:sed -n '/起始时间/,/结束时间/p' ⽇志⽂件| grep ‘keyword’
例:sed -n ‘/2018-06-21 14:30:20/,/2018-06-21 16:12:00/p’ catalina.out | grep ‘keyword’
4.
tail  -n  10  ⽇志⽂件  查询⽇志尾部最后10⾏的⽇志;
tail -n +10 ⽇志⽂件    查询10⾏之后的所有⽇志;
head -n 10  ⽇志⽂件  查询⽇志⽂件中的头10⾏⽇志;
head -n -10  ⽇志⽂件  查询⽇志⽂件除了最后10⾏的其他所有⽇志;
5.
如果我们查的⽇志很多,打印在屏幕上不⽅便查看, 有两个⽅法:
(1)使⽤more和less命令, 如: cat -n test.log |grep "地形" |more    这样就分页打印了,通过点击空格键翻页
(2)使⽤ & 将其保存到⽂件中,到时可以拉下这个⽂件分析.如:
cat -n test.log |grep "地形"  &
1.VI中
参考:
//以下删除命令好多都是剪贴,删除应该就是剪贴吧。。
Ctrl+u:向⽂件⾸翻半屏;
Ctrl+d:向⽂件尾翻半屏;
Ctrl+f:向⽂件尾翻⼀屏;
Ctrl+b:向⽂件⾸翻⼀屏;
Esc:从编辑模式切换到命令模式;
ZZ:命令模式下保存当前⽂件所做的修改后退出vi;
:⾏号:光标跳转到指定⾏的⾏⾸;
:$:光标跳转到最后⼀⾏的⾏⾸;
x或X:删除⼀个字符,x删除光标后的,⽽X删除光标前的;
D:删除从当前光标到光标所在⾏尾的全部字符;
dd:删除光标⾏正⾏内容;
linux系统vim编辑器ndd:删除当前⾏及其后n-1⾏;
nyy:将当前⾏及其下n⾏的内容保存到寄存器?中,其中?为⼀个字母,n为⼀个数字;
p:粘贴⽂本操作,⽤于将缓存区的内容粘贴到当前光标所在位置的下⽅;
P:粘贴⽂本操作,⽤于将缓存区的内容粘贴到当前光标所在位置的上⽅;
/
字符串:⽂本查操作,⽤于从当前光标所在位置开始向⽂件尾部查指定字符串的内容,查的字符串会被加亮显⽰;
name:⽂本查操作,⽤于从当前光标所在位置开始向⽂件头部查指定字符串的内容,查的字符串会被加亮显⽰;
a,bs/F/T:替换⽂本操作,⽤于在第a⾏到第b⾏之间,将F字符串换成T字符串。其中,“s/”表⽰进⾏替换操作;
a:在当前字符后添加⽂本;
A:在⾏末添加⽂本;
i:在当前字符前插⼊⽂本;
I:在⾏⾸插⼊⽂本;
o:在当前⾏后⾯插⼊⼀空⾏;
O:在当前⾏前⾯插⼊⼀空⾏;
:
wq:在命令模式下,执⾏存盘退出操作;
:w:在命令模式下,执⾏存盘操作;
:w!:在命令模式下,执⾏强制存盘操作;
:q:在命令模式下,执⾏退出vi操作;
:q!:在命令模式下,执⾏强制退出vi操作;
:e⽂件名:在命令模式下,打开并编辑指定名称的⽂件;
:n:在命令模式下,如果同时打开多个⽂件,则继续编辑下⼀个⽂件;
:f:在命令模式下,⽤于显⽰当前的⽂件名、光标所在⾏的⾏号以及显⽰⽐例;
:set number:在命令模式下,⽤于在最左端显⽰⾏号;
:set nonumber:在命令模式下,⽤于在最左端不显⽰⾏号;
1,3 co 4 将1-3⾏复制到4⾏之后
set nu 显⽰⾏数
nu 查看⾏数
u 撤销
U 撤销,撤销上⼀次撤销, 就是撤销/恢复重复
gg 光标移动到第⼀⾏
G 光标到最后⼀⾏
1/2/3 任意数字,光标到指定数字⾏
"zz"命令会把当前⾏置为屏幕正中央,"zt"命令会把当前⾏置于屏幕顶端,"zb"则把当前⾏置于屏幕底端.
搜索: "?"命令与"/"的⼯作相同,只是搜索⽅向相反.n下⼀次出现的位置,"N"命令会重复前⼀次查,但是与最初⽤"/"或"?"指定的搜索⽅向相反。
如果查内容忽略⼤⼩写,则⽤命令"set ignorecase", 返回精确匹配⽤命令"set noignorecase"
\ ⽤于转义特殊字符
2.linux中grep命令的⽤法
参考:
作为linux中最为常⽤的三⼤⽂本(awk,sed,grep)处理⼯具之⼀,掌握好其⽤法是很有必要的。
⾸先谈⼀下grep命令的常⽤格式为:grep  [选项]  ”模式“  [⽂件]
grep家族总共有三个:grep,egrep,fgrep。
常⽤选项:
  -E :开启扩展(Extend)的正则表达式。
  -i :忽略⼤⼩写(ignore case)。
  -v :反过来(invert),只打印没有匹配的,⽽匹配的反⽽不打印。
  -n :显⽰⾏号
  -w :被匹配的⽂本只能是单词,⽽不能是单词中的某⼀部分,如⽂本中有liker,⽽我搜寻的只是like,就可以使⽤-w选项来避免匹配liker
  -c :显⽰总共有多少⾏被匹配到了,⽽不是显⽰被匹配到的内容,注意如果同时使⽤-cv选项是显⽰有多少⾏没有被匹配到。
  -o :只显⽰被模式匹配到的字符串。
  --color :将匹配到的内容以颜⾊⾼亮显⽰。
  -A  n:显⽰匹配到的字符串所在的⾏及其后n⾏,after
  -B  n:显⽰匹配到的字符串所在的⾏及其前n⾏,before
  -C  n:显⽰匹配到的字符串所在的⾏及其前后各n⾏,context
模式部分:
  1、直接输⼊要匹配的字符串,这个可以⽤fgrep(fast grep)代替来提⾼查速度,⽐如我要匹配⼀下hello.c⽂件中printf的个数:grep  -c  "printf"  hello.c
  2、使⽤基本正则表达式,下⾯谈关于基本正则表达式的使⽤:
    匹配字符:
      . :任意⼀个字符。
      [abc] :表⽰匹配⼀个字符,这个字符必须是abc中的⼀个。
      [a-zA-Z] :表⽰匹配⼀个字符,这个字符必须是a-z或A-Z这52个字母中的⼀个。
      [^123] :匹配⼀个字符,这个字符是除了1、2、3以外的所有字符。
      对于⼀些常⽤的字符集,系统做了定义:
      [A-Za-z] 等价于 [[:alpha:]]
      [0-9] 等价于 [[:digit:]]
      [A-Za-z0-9] 等价于 [[:alnum:]]
      tab,space 等空⽩字符 [[:space:]]
      [A-Z] 等价于 [[:upper:]]
      [a-z] 等价于 [[:lower:]]
      标点符号 [[:punct:]]
    匹配次数:
      \{m,n\} :匹配其前⾯出现的字符⾄少m次,⾄多n次。
      \? :匹配其前⾯出现的内容0次或1次,等价于\{0,1\}。
      * :匹配其前⾯出现的内容任意次,等价于\{0,\},所以 ".*" 表述任意字符任意次,即⽆论什么内容全部匹配。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。