grep

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

命令语法:

usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]

命令实例:

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

➜  ~ ping www.cnblogs.com > blog.log | tail -f blog.log
PING www.cnblogs.com (42.121.252.58): 56 data bytes
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=26.616 ms
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=26.738 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=26.482 ms
64 bytes from 42.121.252.58: icmp_seq=3 ttl=32 time=26.485 ms
64 bytes from 42.121.252.58: icmp_seq=4 ttl=32 time=26.325 ms
^C
➜ ~ grep -c 26.616 blog.log
1

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

➜  ~ grep -C 2 26.616 blog.log
PING www.cnblogs.com (42.121.252.58): 56 data bytes
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=26.616 ms
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=26.738 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=26.482 ms

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

➜  ~ grep -A 2 26.616 blog.log
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=26.616 ms
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=26.738 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=26.482 ms

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

➜  ~ grep -v 26.616 blog.log
PING www.cnblogs.com (42.121.252.58): 56 data bytes
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=26.738 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=26.482 ms
64 bytes from 42.121.252.58: icmp_seq=3 ttl=32 time=26.485 ms
64 bytes from 42.121.252.58: icmp_seq=4 ttl=32 time=26.325 ms

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

➜  ~ grep --color 26.616 blog.log
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=26.616 ms

tail

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

命令语法:

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

命令实例:

  -f:监视File文件增长;

➜  ~ ping www.cnblogs.com > blog.log | tail -f blog.log
PING www.cnblogs.com (42.121.252.58): 56 data bytes
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=26.250 ms
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=25.807 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=25.966 ms
64 bytes from 42.121.252.58: icmp_seq=3 ttl=32 time=25.939 ms
64 bytes from 42.121.252.58: icmp_seq=4 ttl=32 time=25.833 ms
64 bytes from 42.121.252.58: icmp_seq=5 ttl=32 time=25.862 ms
一直显示下去。。。

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

➜  ~ tail -q blog.log
PING www.cnblogs.com (42.121.252.58): 56 data bytes
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=26.250 ms
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=25.807 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=25.966 ms
64 bytes from 42.121.252.58: icmp_seq=3 ttl=32 time=25.939 ms
64 bytes from 42.121.252.58: icmp_seq=4 ttl=32 time=25.833 ms
64 bytes from 42.121.252.58: icmp_seq=5 ttl=32 time=25.862 ms

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

➜  ~ ping www.cnblogs.com > blog.log | tail -fn 1 blog.log
PING www.cnblogs.com (42.121.252.58): 56 data bytes
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=25.813 ms
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=26.363 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=26.218 ms
64 bytes from 42.121.252.58: icmp_seq=3 ttl=32 time=26.292 ms
一直显示下去。。。

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

➜  ~ ping www.baidu.com > baidu.log | tail -fn 500 baidu.log | awk '{print NR,$0}' 【或者 ping www.baidu.com > baidu.log | tail -fn 500 baidu.log | cat -n】
1 PING www.a.shifen.com (61.135.169.125): 56 data bytes
2 64 bytes from 61.135.169.125: icmp_seq=0 ttl=51 time=6.030 ms
3 64 bytes from 61.135.169.125: icmp_seq=1 ttl=51 time=3.815 ms
4 64 bytes from 61.135.169.125: icmp_seq=2 ttl=51 time=3.964 ms
5 64 bytes from 61.135.169.125: icmp_seq=3 ttl=51 time=3.775 ms

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

tail -n  baidu.log

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

tail -n + baidu.log

wc

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

命令语法:

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

命令实例:

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

➜  ~ cat blog.log
PING www.cnblogs.com (42.121.252.58): 56 data bytes
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=25.762 ms
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=25.733 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=26.556 ms
➜ ~ wc -c blog.log
238 blog.log

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

➜  ~ wc -l blog.log
4 blog.log
➜ ~ wc -w blog.log
30 blog.log

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

➜  ~ wc blog.log
blog.log

awk

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

命令语法:

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

awk [选项参数] -f scriptfile var=value file(s)

命令实例:

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

➜  ~ cat blog.log
PING www.cnblogs.com (42.121.252.58): 56 data bytes
64 bytes from 42.121.252.58: icmp_seq=0 ttl=32 time=25.762 ms
64 bytes from 42.121.252.58: icmp_seq=1 ttl=32 time=25.733 ms
64 bytes from 42.121.252.58: icmp_seq=2 ttl=32 time=26.556 ms
➜ ~ 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的详情看这里

 

Linux下grep、tail、wc、awk文件处理命令的更多相关文章

  1. linux下 sort | uniq | wc | less 几个命令的基本用法

    sort -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法: -n :使用『纯数字』进行 ...

  2. linux下shell脚本执行jar文件

    最近在搞一个shell脚本启动jar文件个关闭jar文件的东东.搞得我都蛋疼了.今天晚上终于弄好了 话说,小弟的linux只是刚入门,经过各方查资料终于搞定了.话不多说,下面开始上小弟写的shell脚 ...

  3. Linux下grep显示前后几行信息

    Linux下grep显示前后几行信息 标准unix/linux下的grep通过下面參数控制上下文 grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行grep -B ...

  4. [转帖]linux下使用 du查看某个文件或目录占用磁盘空间的大小

    linux下使用 du查看某个文件或目录占用磁盘空间的大小 du -ah --max-depth= 去年用过一次 后来忘记了.. 命令这个东西 熟能生巧.. https://www.cnblogs.c ...

  5. linux 下C语言编程库文件处理与Makefile编写

    做开发快3年了,在linux下编译安装软件算是家常便饭了.就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题.看来还是像vs.codeblocks这样的ide把人弄蠢了.便下定决心一 ...

  6. Linux下用rm删除的文件的恢复方法

    Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站https://www.linuxidc.com/Linux/2008-08/14744.htm linu ...

  7. linux下查找指定后缀的文件

    1.linux下查找指定后缀的文件 例如查找当前目录下的所有后缀名时.c或.h的文件 find  .  -type f -regex  ".*\.\(c\|h\)"

  8. Linux下自动清除MySQL日志文件

    MySQL运行过程中会生成大量的日志文件,占用不少空间,修改my.cnf文件配置bin-log过期时间,在Linux下自动清除MySQL日志文件 [mysqld] expire-logs-days= ...

  9. Linux下的文件结构,及对应文件夹的作用

    Linux下的文件结构,及对应文件夹的作用 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比 ...

  10. linux下添加用户并将文件夹授权给某一个用户

    ### linux下添加用户并将文件夹授权给某一个用户 背景:在做一个项目时,需要外包的前端人员调试测试环境的页面,但是又不能给他服务器的账号信息,就在服务器上新添加一个子账户,再给这个账户项目文件的 ...

随机推荐

  1. Easyui combobox onChange事件

    Easyui combobox onChange事件: 注册事件: $(function () { $('#cc_id').combobox({ onChange: function (newValu ...

  2. Oracle 12C -- 手动创建CDB

    1.指定oracle_sid $ export ORACLE_SID=db12 2.指定环境变量 比如ORACLE_BASE.ORACLE_HOME.PATH(要包含$ORACLE_HOME/bin) ...

  3. Linux 性能測试工具

    Linux 性能測试工具 linux performance 查看系统配置 查看CPU信息 lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64- ...

  4. nmapport状态解析

  5. WinForm DataGridView新增加行

      1.不显示最下面的新行 通常 DataGridView 的最下面一行是用户新追加的行(行头显示 * ).如果不想让用户新追加行即不想显示该新行,可以将 DataGridView 对象的 Allow ...

  6. IRGAN:A Minimax Game for Unifying Generative and Discriminative Information Retrieval Models

    https://arxiv.org/pdf/1705.10513.pdf 论文阅读笔记: https://www.cnblogs.com/liaohuiqiang/p/9694277.html htt ...

  7. JVM 入门三板斧

    一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的.类加载器读取了类文件后,需要把类.方法.常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆内存分为三部分: Young Ge ...

  8. 基于tornado的爬虫并发问题

    tornado中的coroutine是python中真正意义上的协程,与python3中的asyncio几乎是完全一样的,而且两者之间的future是可以相互转换的,tornado中有与asyncio ...

  9. 转:ECharts图表组件入门教程之Theme:ECharts图表的皮肤是什么?如何给图表换主题(皮肤)Theme?

    一.什么是ECharts图表的皮肤(主题)? 针对这个问题我只能这样回答,ECharts图表的主题(皮肤)就犹如人的衣服一样,是用来衬托和渲染主体,使其变得更加美观好看的目的.你去过ECharts图表 ...

  10. MySQL几点重要的性能指标计算和优化

    qps 每秒处理的查询数tps 每秒处理的事务数IOPS 每秒磁盘进行的I/O操作次数 一.TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数. ...