zoukankan      html  css  js  c++  java
  • 文本处理工具

    1. cat

    不适合查看大文件
    1、查看文件及行号
    [root@localhost teone]# cat -n  one.log 
         1	2 this is a test
         2	3 Are you like awk
         3	This's a test
         4	10 There are orange,apple,mongo
    2、显示隐藏符号,如回车符($)
    [root@localhost teone]# cat -A one.log 
    2 this is a test$
    3 Are you like vvv$
    This's a test$
    10 There are orange,apple,mongo$
    
    3、合并文件(将three.log和 four.log这两个文件内容追加至one.log)
    [root@localhost teone]# cat three.log four.log >> one.log 
    [root@localhost teone]# cat one.log 
    2 this is a test
    3 Are you like vvv
    This's a test
    10 There are orange,apple,mongo
    this three
    hhhhhhhhhhhh
    this four file
    vvvvvvvvvvvvv
    

    2.more,less

    翻页查看大文件
    
    

    3.head,tail

    head:显示指定文件前若干行的文件内容
    tail:显示指定文件结尾若干行的文件内容
    1、-n 指定显示开头/结尾几行
    [root@localhost teone]# head -n 3 two.log 
    hhhh,jjjjj,j
    bbbbb,bbbb
    nnnnnn,nnnnnn,nnn
    
    2、监听文件新增内容
    tail -f
    
    

    4.grep

    1、查找文件中指定字符串的行
    [root@localhost teone]# grep bb two.log 
    bbbbb,bbbb
    bbbsssa,a
    bbbbb,bbbb
    bbbsssa,a
    
    2、查看行的个数
    [root@localhost teone]# grep -c bb two.log 
    4
    
    3、查看指定的实时信息
    tail -f /opt/test.log | grep -C 10 --color '关键字'
    
    4、使用正则表达式
    [root@localhost teone]# grep ^gg two.log 
    ggggg
    
    5.当前文件夹下以log结尾的文件中包含bb关键字的行
    [root@localhost teone]# grep bb *.log
    one.log:BBBDDDBBbbb
    two.log:bbbbb,bbbb
    two.log:bbbsssa,a
    two.log:bbbbb,bbbb
    two.log:bbbsssa,a
    
    6.反向查找
    [root@localhost t_file]# grep -v cc one.log
    "ddd
    7.不区分大小写
    [root@localhost t_file]# grep -i "cc" *.log
    one.log:ccccccccccccccccc
    one.log:CCCCCCCC
    two.log:cccccc
    8.找出以.log结尾的文件,并包含关键字cc的行
    [root@localhost t_file]# find -name "*.log"|xargs grep "ccc"
    ./two.log:cccccc
    ./one.log:ccccccccccccccccc
    
    9.递归查找目录下文件 -r(范围:该目录及其子目录)
    [root@localhost qqc_data]# grep -r  ccccc /qqc_data/t_file/
    /qqc_data/t_file/one.log:cc,|cc"ccc44 cccccccccc
    /qqc_data/t_file/three.txt:cc 44 ccccccc
    

    5.find

    1、查找当前目录及子目录下以.gz结尾的文件
    [root@localhost qqc_data]# find -name "*.gz"
    ./redis-4.0.8.tar.gz
    ./go1.15.4.linux-amd64.tar.gz
    ./go/src/crypto/ed25519/testdata/sign.input.gz
    ./go/src/debug/elf/testdata/hello-world-core.gz
    ./go/src/encoding/json/testdata/code.json.gz
    
    2.指定文件容量查找(大于1M,以log后缀的文件)
    find / -size +1M -name "*.log"
    

    6.awk

    1,指定固定的分割符
    [root@localhost t_file]# cat one.log 
    d"|d d
    cc,|cc"ccc cccccccccc
    &,&
    CCC C|"Csa,sCCC
    vv,saa
    # BEGIN{FS="分割字符"}:指定分割符,不指定默认以空格分割(awk '{print$1}' one.log)
    [root@localhost t_file]# awk 'BEGIN{FS="|"} {print$1}' one.log 
    d"
    cc,
    &,&
    CCC C
    vv,saa
    
    2,指定多个分隔符
    # 先按| 分割,得到的结果再按, 分割
    [root@localhost t_file]# awk -F '[| ,]' '{print$1}' one.log 
    d"
    cc
    &
    CCC
    vv
    
    3.设置变量
    [root@localhost t_file]# cat two.log 
    22,ddddddddd
    ccc,ccc
    33,aaaaaaaa
    mmmmmmmmmmm
    
    # -v:设置变量,如果前面的结果是数字,会进行运算操作
    [root@localhost t_file]# awk -va=1 'BEGIN{FS=","} {print$1,$1+a}' two.log 
    22 23
    ccc 1
    33 34
    mmmmmmmmmmm 1
    
    4. -f:指定awk 文件
    awk -f cal.awk log.txt
    
    5. 运算符
    [root@localhost t_file]# cat three.txt 
    kk 2 kk
    cvv 3 vvvvv
    zz gghj zz
    cc 44 ccccccc
    5.1.过滤第二列小于10的行
    [root@localhost t_file]# awk '$2<10' three.txt 
    kk 2 kk
    cvv 3 vvvvv
    5.2.过滤第二列小于10的行或者等于gghj 的行
    [root@localhost t_file]# awk '$2<10 || $2=="gghj"' three.txt 
    kk 2 kk
    cvv 3 vvvvv
    zz gghj zz
    
    6.正则匹配关键字
    # cc或者vv 关键字的行
    [root@localhost t_file]# awk '$0 ~ /cc/ || /vv/' three.txt 
    cvv 3 vvvvv ffs
    cc 44 ccccccc
    # 每行第4列包含ff的行
    [root@localhost t_file]# awk '$4 ~ /ff/ {print $0}' three.txt 
    cvv 3 vvvvv ffs
    zz gghj zz ssffg
    # 所有包含ff的行
    [root@localhost t_file]# awk '/ff/' three.txt 
    cvv 3 vvvvv ffs
    zz gghj zz ssffg
    # 取反操作:
    [root@localhost t_file]# awk '$0 !~ /cc/' three.txt 
    kk 2 kk
    cvv 3 vvvvv ffs
    zz gghj zz ssffg
    
    # 注:print$0 表示整行
    
    

    image

    应用

    1, 通过关键字查找进程号并删除
    ps -aux | grep t_file/one.log | grep -v grep | awk '{print$2}' | xargs kill -9
    
    2.指定关键字查看实时日志
    tail -f /opt/test.log | grep -C 10 --color '关键字'
    
    3.查看内存
    free -m | awk '$0 ~ /Mem/ {print$2}'
    
    4.指定日期查看日志文件
    awk -ve="05/Jan/2021:13" '$0 ~ e {print$0}' test.log
    
    5.指定目录中包含某个关键字的所有文件
    [root@localhost qqc_data]# grep -r ccccc /qqc_data/t_file/ | awk 'BEGIN{FS=":"} {print$1}'
    /qqc_data/t_file/one.log
    /qqc_data/t_file/three.txt
    
    
    # https://www.linuxcool.com/netstat
    
  • 相关阅读:
    匿名函数
    内置函数
    基础函数--3
    基础函数(2)
    基础函数(1)
    文件的相关操作
    知识点补充,set集合,深浅copy
    is 和 ==的区别
    Django-form组件中过滤当前用户信息
    Django的常用模块引入整理
  • 原文地址:https://www.cnblogs.com/quqinchao/p/14274227.html
Copyright © 2011-2022 走看看