在日常工作中会遇到需要筛选过滤要查看的日志等文本文件的任务,例如需要查看日志文件的最后几行等。下面总结一下常见的对文本行过滤的方法。一起去看看吧!
常用命令行工具
接下来主要使用的是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命令还有很多强大的用法,大家有兴趣的话可以深入研究一下。
WindowsSubsystem for Linux(WSL)2对Windows10版本1903和1909的支持 根据客户......
阅读微软已经向开发通道中的Windows Insiders宣布了Windows 10 Insider Prev......
阅读bull; Wine最近收到了对6.0版的更新。 bull; 此更新改进了使用Wine的......
阅读有趣的是,微软正在努力使Linux在Windows10下运行。我们都熟悉W......
阅读适用于 Linux 的 Windows 子系统既是一种启示,也是一场革命。现在......
阅读近日,有些朋友问小编如何恢复Linux桌面下方面板上显示最小化的图标?今天小编将为大家分享恢复Linux桌面下方面板上显示最小化的图标的方法,希望对大家会有帮助,有需要的朋友一...
次阅读
今天小编要为大家带来的是Linux使用文本浏览器lynx并显示中文的方法!希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
在Linux系统中有很多命令,xlsatoms命令可以用来定义搜索文件的范围和成分。今天小编将为大家分享的是Linux系统xlsatom命令的使用说明,希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
今天小编将为大家带来的是临时更改Linux栈空间大小的方法,希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
最近一些朋友问小编Linux Mount NTFS分区造成的权限问题如何解决?今天小编将为大家带来的是Linux Mount NTFS分区造成的权限问题的解决方案,希望对大家会有帮助,有需要的朋友一起去看看...
次阅读
适用于 Linux 5.16 的新 Zstd 已准备就绪,性能提升高达 35% 最近,为 Linux 5.16 内核准备的新 Zstd 已提交给linux-next 合并,以便在接下来的几周内进行更广泛的测试。...
次阅读
下面小编将为大家带来的是Linux系统swap和zram swap的使用详解,希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
bull; Wine最近收到了对6.0版的更新。 bull; 此更新改进了使用Wine的Linux系统上的Windows应用程序。 bull; Wine可用于在非本机系统上运行Windows应用程序和...
次阅读
有趣的是,微软正在努力使Linux在Windows10下运行。我们都熟悉WSL(Linux的Windows子系统)。现在,WSLg(用于Linux GUI的Windows子系统)随之出现。 这样就可以直接在Windo...
次阅读
微软已经向开发通道中的Windows Insiders宣布了Windows 10 Insider Preview Build 20246 。 通过内部版本20246,Microsoft使用户可以轻松地通过单行命令(wsl.exe nda...
次阅读
这篇文章主要讲述了linux系统很卡的基本排查方法介绍。希望对大家会有帮助,下面就随小编一起去看看具体的操作吧...
次阅读
最近一些朋友问小编Linux下如何设置交换文件?今天小编将为大家带来的是Linux下设置交换文件的方法,希望对大家会有帮助,有需要的朋友一起去看看吧...
次阅读
Linux编程时出现Segmentation fault错误如何解决?今天小编要为大家分享的就是Linux编程时出现Segmentation fault错误的处理办法,有需要的朋友可以参考下...
次阅读
今天小编为大家分享的是Linux以form表单形式上传文件讲解,希望对大家会有帮助,有需要的朋友可以参考下...
次阅读
在实际使用过程中,若一个目录下文件或文件夹太多,在执行“*” 命令时 会提示Argument list too long,如rm -rf /tmp/*命令下...
次阅读