• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    利用linux命令行工具进行文本行过滤的方法

    在日常工作中会遇到需要筛选过滤要查看的日志等文本文件的任务,例如需要查看日志文件的最后几行等。下面总结一下常见的对文本行过滤的方法。一起去看看吧!

    常用命令行工具

    接下来主要使用的是head,tail,sed和awk,这几个工具。其中sed和awk工具非常强大,使用它们来进行文本的过滤可能有点大材小用,不过基本上所有的任务都可以通过head和tail两个命令来完成,而且head和tail日常使用更加方便。

    用法示例

    准备工作

    输入下面命令,生成一个测试用的文件。

    $ seq -f "Line No %g" 10 > lines.txt

    只显示文本的前3行

    可以通过head命令来完成,具体命令和输出如下:

    $ head -n 3 lines.txt

    Line No 1

    Line No 2

    Line No 3

    或者通过sed命令来完成,具体命令和输出如下:

    $ sed -n '1,3p' lines.txt

    Line No 1

    Line No 2

    Line No 3

    awk命令也可以完成

    $ awk 'NR=3' lines.txt

    Line No 1

    Line No 2

    Line No 3

    只显示文本的最后3行

    使用tail命令来完成,具体命令和输出如下:

    $ tail -n 3 lines.txt

    Line No 8

    Line No 9

    Line No 10

    只显示文本的第5行到最后1行

    使用tail命令来完成的方法:

    $ tail -n +5 lines.txt

    Line No 5

    Line No 6

    Line No 7

    Line No 8

    Line No 9

    Line No 10

    sed命令来完成:

    $ sed -n '5,$p' lines.txt

    Line No 5

    --略--

    Line No 10

    用awk来完成:

    $ awk 'NR>=5' lines.txt

    Line No 5

    --略--

    Line No 10

    只显示文本的倒数第3行到第1行

    用head来完成:

    $ head -n -2 lines.txt

    Line No 1

    Line No 2

    Line No 3

    Line No 4

    Line No 5

    Line No 6

    Line No 7

    Line No 8

    只显示文本的第6行到第8行

    用head和tail两个工具:

    $ lines.txt head -n 8 | tail -n 3

    Line No 6

    Line No 7

    Line No 8

    sed的方法:

    $ sed -n '6,8p' lines.txt

    Line No 6

    Line No 7

    Line No 8

    awk的方法:

    $ awk '(NR>=6)(NR=8)' lines.txt

    Line No 6

    Line No 7

    Line No 8

    只显示文本奇数行或偶数行

    sed命令生成奇数行

    $ sed -n '1~2p' lines.txt

    Line No 1

    Line No 3

    Line No 5

    Line No 7

    Line No 9

    sed命令生成偶数行

    $ sed -n '0~2p' lines.txt

    Line No 2

    Line No 4

    Line No 6

    Line No 8

    Line No 10

    awk命令生成奇数行

    $ awk 'NR%2' lines.txt

    Line No 1

    Line No 3

    Line No 5

    Line No 7

    Line No 9

    awk命令生成偶数行

    $ awk '(NR+1)%2' lines.txt

    Line No 2

    Line No 4

    Line No 6

    Line No 8

    Line No 10

    小结

    linux系统的一个有名的特点是绝大多少文件都是文本文件,这些文件都可以通过上面的方法来查看特定的行。另外linux命令行工具也非常灵活,完成一件任务,不是只有一种方法,有很多方法可以实现,这也是linux好玩的地方。在文本过滤方面,sed和awk命令还有很多强大的用法,大家有兴趣的话可以深入研究一下。

    上一篇:Linux编程时出现Segmentation fault错误如何解决?
    下一篇:从Vim中访问shell或者运行外部命令的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    利用linux命令行工具进行文本行过滤的方法 利用,linux,命令行,工具,