您的位置:首页 > 运维架构 > Linux

Linux下grep、tail、wc、awk文件处理命令

2016-12-04 16:37 477 查看

grep

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并匹配行打印出来。

命令语法:

usage:grep[-abcDEFGHhIiJLlmnOoqRSsUVvwxZ][-Anum][-Bnum][-C[num]]
[-epattern][-ffile][--binary-files=value][--color=when]
[--context[=num]][--directories=action][--label][--line-buffered]
[--null][pattern][file...]

命令实例:

-c:计算匹配到的行数,并显示结果;

➜~pingwww.cnblogs.com>blog.log|tail-fblog.log
PINGwww.cnblogs.com(42.121.252.58):56databytes
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=26.616ms
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=26.738ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=26.482ms
64bytesfrom42.121.252.58:icmp_seq=3ttl=32time=26.485ms
64bytesfrom42.121.252.58:icmp_seq=4ttl=32time=26.325ms
^C
➜~grep-c26.616blog.log
1


-C2:显示匹配行,并显示之前与之后的两行,也就是一共显示5行;

➜~grep-C226.616blog.log
PINGwww.cnblogs.com(42.121.252.58):56databytes
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=26.616ms
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=26.738ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=26.482ms


-A2:显示匹配行,并显示之后的两行;

➜~grep-A226.616blog.log
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=26.616ms
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=26.738ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=26.482ms


-v:显示不包含匹配行的所有行;

➜~grep-v26.616blog.log
PINGwww.cnblogs.com(42.121.252.58):56databytes
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=26.738ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=26.482ms
64bytesfrom42.121.252.58:icmp_seq=3ttl=32time=26.485ms
64bytesfrom42.121.252.58:icmp_seq=4ttl=32time=26.325ms


  -color:显示匹配内容,并用不同颜色突出显示;

➜~grep--color26.616blog.log
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=26.616ms


tail

  tail命令是线上机器查看log最常用的命令,可以从指定点开始将文件写到标准输出,tail-f可以查看不停打出的日志文件,使你看到最新的log日志。

命令语法:

  usage:tail[-F|-f|-r][-q][-b#|-c#|-n#][file...]

命令实例:

  -f:监视File文件增长;

➜~pingwww.cnblogs.com>blog.log|tail-fblog.log
PINGwww.cnblogs.com(42.121.252.58):56databytes
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=26.250ms
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=25.807ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=25.966ms
64bytesfrom42.121.252.58:icmp_seq=3ttl=32time=25.939ms
64bytesfrom42.121.252.58:icmp_seq=4ttl=32time=25.833ms
64bytesfrom42.121.252.58:icmp_seq=5ttl=32time=25.862ms
一直显示下去。。。


  -q:与-f相反,将文件内容直接显示出来,默认显示文件从后往前数10行的内容;

➜~tail-qblog.log
PINGwww.cnblogs.com(42.121.252.58):56databytes
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=26.250ms
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=25.807ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=25.966ms
64bytesfrom42.121.252.58:icmp_seq=3ttl=32time=25.939ms
64bytesfrom42.121.252.58:icmp_seq=4ttl=32time=25.833ms
64bytesfrom42.121.252.58:icmp_seq=5ttl=32time=25.862ms


  -n:从后往前数,显示指定的行数,一般-f结合使用:-fn,比如-fn20,一次当前显示文件的最后20行,并不停显示文件的最新内容;

➜~pingwww.cnblogs.com>blog.log|tail-fn1blog.log
PINGwww.cnblogs.com(42.121.252.58):56databytes
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=25.813ms
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=26.363ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=26.218ms
64bytesfrom42.121.252.58:icmp_seq=3ttl=32time=26.292ms
一直显示下去。。。


  显示文件内容的同时,显示行号(并不是文件的行号,而是当前显示的行号):

➜~pingwww.baidu.com>baidu.log|tail-fn500baidu.log|awk'{printNR,$0}'【或者pingwww.baidu.com>baidu.log|tail-fn500baidu.log|cat-n】
1PINGwww.a.shifen.com(61.135.169.125):56databytes
264bytesfrom61.135.169.125:icmp_seq=0ttl=51time=6.030ms
364bytesfrom61.135.169.125:icmp_seq=1ttl=51time=3.815ms
464bytesfrom61.135.169.125:icmp_seq=2ttl=51time=3.964ms
564bytesfrom61.135.169.125:icmp_seq=3ttl=51time=3.775ms


  从后往前数文件2行直接显示出来:

tail-n2baidu.log


  从文件的第二行开始显示文件剩余部分:

tail-n+2baidu.log


wc

  Linuxwc命令用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,不制定文件名或者文件名为“-”,则wc会从标准输入设备读取数据。

命令语法:

  usage:wc[-clmw][file...]

命令实例:

  -c或--bytes或--chars显示Bytes数:

➜~catblog.log
PINGwww.cnblogs.com(42.121.252.58):56databytes
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=25.762ms
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=25.733ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=26.556ms
➜~wc-cblog.log
238blog.log


  显示行数:-l,显示字数或单词数:-w:

➜~wc-lblog.log
4blog.log
➜~wc-wblog.log
30blog.log


  不过以上都可以直接wcfilename,输出值的含义对应上面两个例子:

➜~wcblog.log
430238blog.log


awk

  awk是一种处理文本文件的语言,是一个强大的文本分析工具。

命令语法:

awk[选项参数]'script'var=valuefile(s)



awk[选项参数]-fscriptfilevar=valuefile(s)

命令实例:

  直接看栗子,就不解释了:

➜~catblog.log
PINGwww.cnblogs.com(42.121.252.58):56databytes
64bytesfrom42.121.252.58:icmp_seq=0ttl=32time=25.762ms
64bytesfrom42.121.252.58:icmp_seq=1ttl=32time=25.733ms
64bytesfrom42.121.252.58:icmp_seq=2ttl=32time=26.556ms
➜~awk'{print$1$2}'blog.log
PINGwww.cnblogs.com
64bytes
64bytes
64bytes


➜~awk'{print$1"->>"$2}'blog.log
PING->>www.cnblogs.com
64->>bytes
64->>bytes
64->>bytes


awk的详情看这里


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐