时间:2021-05-23
在日常工作中会遇到需要筛选过滤要查看的日志等文本文件的任务,例如需要查看日志文件的最后几行等。下面总结一下常见的对文本行过滤的方法。一起去看看吧!
常用命令行工具
接下来主要使用的是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命令还有很多强大的用法,大家有兴趣的话可以深入研究一下。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Linux终端中的操作均是使用命令行来进行的。因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境中将python用起来。打开命令
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统
本文实例讲述了Python实现获取命令行输出结果的方法。分享给大家供大家参考,具体如下:Python获取命令行输出结果,并对结果进行过滤找到自己需要的!这里以获
本文介绍了用Node.js写一个简单的命令行工具,分享给大家,具体如下:操作系统需要为Linux1.目标在命令行输入自己写的命令,完成目标任务命令行要求全局有效
在Linux系统中Deepin命令行上可以对文件进行解压,使用Deepin命令行还可以同时对多个tarball文件解压。那么Linux中怎么在Deepin同