linux过滤文件大小(利用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命令还有很多强大的用法 ,大家有兴趣的话可以深入研究一下 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!