在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在日常工作中会遇到需要筛选过滤要查看的日志等文本文件的任务,例如需要查看日志文件的最后几行等。下面总结一下常见的对文本行过滤的方法。一起去看看吧! 常用命令行工具 接下来主要使用的是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命令还有很多强大的用法,大家有兴趣的话可以深入研究一下。 |
请发表评论