zoukankan      html  css  js  c++  java
  • linux find grep tail

    如果在只是想匹配模式的上下几行,grep可以实现。

     

    $grep -5 'parttern' inputfile //打印匹配行的前后5

     

    $grep -C 5 'parttern' inputfile //打印匹配行的前后5

     

    $grep -A 5 'parttern' inputfile //打印匹配行的后5

     

    $grep -B 5 'parttern' inputfile //打印匹配行的前5

     

    grep 同时满足多个关键字和满足任意关键字

    ① grep -E "word1|word2|word3"   file.txt

       满足任意条件(word1、word2和word3之一)将匹配。

    ② grep word1 file.txt | grep word2 |grep word3

       必须同时满足三个条件(word1、word2和word3)才匹配。

    不说废话, 例如需要排除 abc.txt 中的  mmm   nnn

    grep -v 'mmm|nnn' abc.txt
    但是这样还是很多,需要从这几条信息里面去找到所需要的 ip 地址,我们可能想到了使用 grep -v 屏蔽掉 inet6,结果如下:

    bash-3.2# ifconfig | grep inet | grep -v inet6
    inet 127.0.0.1 netmask 0xff000000
    inet 10.60.104.38 netmask 0xfffffe00 broadcast 10.60.105.255 

     

     

    查看mysql慢日志中ip地址为192.168.0.10发送过来的SQL语句的后面三行

     

    1. tail -50 /usr/local/mysql/data/sql-slow.log |grep -3 '192.168.0.10'  

    匹配php错误日志中某一个字段

     2tail -100 /data/logs/php/php_error_5.3.log  | grep  "Memcache::get()";

    查看某一个文件第5行和第10

     sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。

    ========================================================================================

    1tail -f filename
    说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C

    2tail -n 20 filename
    说明:显示filename最后20行。

    3tail -r -n 10 filename
    说明:逆序显示filename最后10

    ========================================================================================

    对日志记录做多次grep过滤输出,格式如下:

    tail -f log | grep xxx | grep yyy

    发现grep失效,无法做正确输出。google研究了一下,原因如下:

    管道 | 是全缓冲的,一般来说buffer_size4096,有些是8192。不管具体值多少,只有buffer_size满了,才会看到输出。

    在操作里  >>file 这个操作也是全缓冲的。调整如下

    tail -f log | grep --line-buffer xxx | grep --line-buffer yyy

    结果输出正常。

    grep当带上了 --line-buffer 的时候,每输出一行,就刷新一次。

    unix里,块设备和普通文件,以及管道都是全缓冲的。

     

    对日志分析告警和实时监控可以考虑如下形式:

     

    tail -f $LOGF | while read var

    do

    case "$var" in

    ...

    ...

    esac

    done

    ========================================================================================

     

    标准unix/linux下的grep通过下面參数控制上下文

     

    grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5

    grep -B 5 foo file 显示foo及前5

    grep -A 5 foo file 显示foo及后5

     

    查看grep版本号的方法是

    grep -V

    ========================================================================================

     

    grep 后面带上-A -B -C 参数可以多显示几行内容

     

    grep -A 5 可以显示匹配内容以及后面的5行内容

    grep -B 5 可以显示匹配内容以及前面的5行内容

    grep -C 5 可以显示匹配内容以及前后面的5行内容

     

    $ cat size.txt

    b124230

    b034325

    a081016

    m7187998

    m7282064

    a022021

    a061048

    m9324822

    b103303

    a013386

    b044525

    m8987131

    B081016

    M45678

    B103303

    BADc2345

     

    $ cat size.txt | grep 'a022021'

    a022021

     

    $ cat size.txt | grep 'a022021' -C 2

    m7187998

    m7282064

    a022021

    a061048

    m9324822

     

    $ cat size.txt | grep 'a022021' -B 2

    m7187998

    m7282064

    a022021

     

    $ cat size.txt | grep 'a022021' -A 2

    a022021

    a061048

    m9324822

    ========================================================================================

    1.目录操作:

    1cd  (切换目录)

      cd ~   回到主目录

      cd      回到主目录

      cd ..   回到上层目录

      cd -    回到刚才的目录

      cd /var/spool/mail    绝对路径

      cd ../mqueue     相对路径(由/var/spool/mail 转到/var/spool/mqueue这样写)

    2pwd (显示当前目录)

      pwd   显示当前目录

      pwd -P   显示当前目录(不以连接文件的数据显示,而是显示正确的完整路径)

    3mkdir (新建一个新目录)

      mkdir -p test1/test2/test3   创建多层目录

      mkdir -m 777 test2   新建权限777的目录

    4rmdir (删除一个空目录)

      rmdir test  删除空文件夹test

      rmdir -p test1/test2/test3  删除test1/test2/test3

    2.文件与目录管理

    1)查看文件目录(ls

      ls -a  列出全部文件,包括隐藏文件

      ls -A  列出全部文件,包括隐藏文件,不包括...两个目录

      ls -d  仅列出目录本身,不包括其中文件数据

      ls -l   列出长串数据,包含文件属性与权限

      ls -R 按文件容量大小排序

      ls -t  按时间排序

      ls --color=never  不显示颜色(always显示颜色,auto自动判断)

      ls --full-time  以完整时间模式输出

    2)复制、删除与移动(cp,rm,mv

      cp -a  /var/log/wtmp wtmp_test 将文件所有特性复制过去

      cp /var/log/wtmp .  复制到当前目录

      cp -i   若目标文件存在,则覆盖时先询问操作的进行

      cp -p  连同文件属性一起复制

      cp -r   目录的复制

      cp -d  若源文件作为连接文件的属性,则复制连接文件属性而非连接文件本身

      cp -s  复制成为符号连接文件

      rm -i  互动模式,删除前询问用户是否操作

      rm -f  忽略不存在的文件,不会出现警告信息

      rm -r  递归删除

      mv -f  如果目标文件存在,不会询问而直接覆盖

      mv -i  如果目标文件存在,则询问是否覆盖

      mv -u 如果目标文件存在,且source比较新,则覆盖

    3)取得路径文件名与目录名称

       basename /etc/systemd/network  取得最后的文件名(network
       dirname /etc/systemd/network      取得目录名(/etc/systemd
    3.文件内容查阅
    1)直接查看文件内容
      cat 由第一行开始显示内容

      cat -A  完整显示,包含特殊字符

      cat -b  列出行号(空白行不标行号)

      cat -n  打印出行号(包括空白行)

      tac 反向显示,与cat相反

      nl 添加行号打印

      nl -b a  打印出行号(包括空白行),类似cat -n

      nl -b t   如果有空行,空的那行不列出行号

      nl -n ln  行号在屏幕坐方显示

      nl -n rn  行号在字段右方显示,不加0

      nl -n rz  行号在字段右方显示,加0

      nl -w 3   行号默认字段改为3

    2)可翻页查看

      more /etc/manpath.config 查看文件信息(空格翻页,enter键向下滚动一行,/字符串向下查询,:f立刻显示文件名及目前显示行数,b往回翻页,q离开)

      less /etc/manpath.config 查看文件信息(空格/pageup上翻,pagedown下翻,/字符串向下查询,?字符串向上查询,n重复查询,N反向重复,q离开) 

    3)数据选取

      head -n 10 /etc/manpath.config  显示前10行(不加-n 10也是默认显示前10行) 

      head -n -10 /etc/manpath.config  显示前面所有行数,不包括后10

      tail -n 20 /etc/manpath.config  显示最后20

      tail -n +20 /etc/manpath.config  显示后面所有行数,不包括前20

      tail -f  持续检测行数,直到按下ctrl+c

    4)非文本文件

      od -t a  默认字符输出

      od -t c  ASCII字符输出

      od -t d  十进制输出(f浮点数,o八进制,x十六进制)

      od -t oCc /etc/issue  八进制列出存储值与ASCII对照表

    5)修改文件时间或者创建新文件

      touch test  新建一个新文件test

      touch -a  修改访问时间

      touch -c  仅修改文件时间,若文件不存在则不创建新文件

      touch -m 修改mtime

      touch -d "2 days ago" test   test文件日期调整为两天前

      touch -t 1503151820 test  test文件时间调整为2015.3.15 18:20

    4.默认权限与隐藏权限

      umask 002  默认权限去除的是其他人权限的w权限

      chattr +i test 设置test文件的隐藏属性(不能被删除、改名、写入添加数据,仅root用户可设置)

      chattr +a test 设置test文件的隐藏属性(只能添加数据,不能删除、修改,仅root用户可设置)

      chattr -a test 取消test文件的隐藏属性

      lsattr test  显示test文件隐藏属性

      file test  查看文件类型

    5.命令与文件的查询

      which ifconfig 找出ifconfig命令的完整文件名

      whereis ifconfig  寻找ifconfig这个文件

      locate ifconfig   寻找与ifconfig相关的文件

      find /etc -mtime 3  3天前的一天之内改过的文件

      find /etc -mtime -3  3天之内改过的文件(不包括第3天)

      find /etc -mtime +3  3天之前改过的文件(不包括第3天)

      find /etc -newer /etc/passwd  寻找/etc下比passwd日期新的文件并列出

      find / -nouser  寻找系统中不属于任何人的文件

      find /home -user root  寻找/home下属于root的文件

      find /etc -name test  寻找/etc下名为test的文件

      find / -size +100k 寻找系统中大于100k的文件

      find / -size +100k -exec ls -l {} ;  将上面找到的文件用ls -l列出来

  • 相关阅读:
    在DataList控件中删除数据记录
    java中进行二进制,八进制,十六进制,十进制间进行相互转换
    Java中重载重写
    WCF 第七章 寄宿 在Windows 进程激活服务中寄宿服务
    .NET 中的十进制浮点类型(译文)
    .NET 中的二进制浮点类型(译文)
    WCF 第六章 序列化和编码 总结
    WCF 第六章 序列化和编码 为自定义序列化使用XmlSerializer
    WCF 第七章 寄宿 在IIS7中寄宿服务
    WCF 第七章 寄宿
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/9330970.html
Copyright © 2011-2022 走看看