南强小屋 Design By 杰米

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

常用命令行工具

接下来主要使用的是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,命令行,文本行过滤

南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米

评论“利用linux命令行工具进行文本行过滤的方法”

暂无利用linux命令行工具进行文本行过滤的方法的评论...

RTX 5090要首发 性能要翻倍!三星展示GDDR7显存

三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。

首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。

据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。