利用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命令还有很多强大的用法,大家有兴趣的话可以深入研究一下。

(0)

相关推荐

  • linux命令行下文件名中有空格的处理方法

    Q:我在树莓派命令行模式下使用mplayer播放单首音乐,因为文件名中含有空格,提示不存在该文件,该如何解决? [johnwick@raspberrypi~]$sudo mplayer Me like ...

  • 如何使用Linux命令行检测DVD刻录机的名字和读写速度

    提问:我想要知道我的DVD刻录机的名字和在烧录时的速度。该使用什么Linux命令行工具来连测DVD刻录机的设备名和速度? 如今大多数消费PC和笔记本电脑都配备了DVD刻录机。在Linux中,光盘驱动器 ...

  • 如何在Linux命令行中刻录ISO或NRG镜像到DVD

    问题:我需要在Linux机器上使用DVD刻录机刻录一个镜像文件(.iso或.nrg)到DVD,有没有一个既快捷又简易的方法,最好是使用命令行工具? 最常见的两种镜像文件格式是ISO(.iso为文件扩展 ...

  • 怎么从Linux命令行刻录镜像文件到DVD光盘中

    当我们在操作Linux系统的时候,需要将镜像文件刻录到DVD中,那么要怎么做呢?下面小编给大家介绍下怎么从Linux命令行刻录镜像文件到DVD中,一起来学习下吧。 最常见的两种镜像文件格式是ISO(. ...

  • 切换ubuntu下图形模式与linux命令行模式

    本文讲述了linux下图形模式与linux命令行模式切换要领。下面将对此执行 细致说明: ctrl+alt+f2 命令行模式 ctrl+alt+f7 图形模式 我安装的是ubuntu版本,其他版本是不 ...

  • linux命令行修改IP的2个方法

    本文介绍了通过linux命令行修改IP的方法,通过linux命令行修改IP可以通过以下两种方式实现。 方式一: ifconfig eth0 192.168.1.18 netmask 255.255.2 ...

  • 切换Linux系统下图形界面与Linux命令行模式

    本文为您讲解假如在Linux系统下实现图形界面与Linux命令行模式切换。 一、Linux系统安装的流程中默认语言是英文,而不是中文简体(安装流程中有两次制定语言选项,起决定作用的是第二次) 二、Li ...

  • Linux命令行之逗趣的图文

    你有没有在Linux命令行中见过一辆火车呢?"猫跟老鼠"呢?编辑Linux命令行其实并不总是件严肃古板的事情。你完全可以用它自娱自乐。下面我们就跟大家一起讨论一下Linux命令行的特质。 假设:本文所 ...

  • 操作文件夹或文件的权限的命令行工具Icacls

    在Windows Vista和Windows Server 2003 Service Pack 2中,微软提供了一个新的命令行工具Icacls,你可以使用它来查看、设置、保存并恢复文件夹或文件的权限。 ...