如何在 Linux 命令行中显示某个文件中指定的几行文字

系统 Linux
在 Linux 命令行中快速找到某个文件的第 n 行?如何显示从第 x 行到第 y 行之间的内容?

工作中会有很多千奇百怪的需求,比如:如何在 Linux 命令行中快速找到某个文件的第 n 行?如何显示从第 x 行到第 y 行之间的内容?

事实上,这个任务会有不止一种方法来实现。

比如,假如要显示第 13 行内容,可以使用 head 命令组合 tail 命令,如下:

head -13 file_name | tail +13

或者,使用 sed 命令

sed -n '13p' file.txt

再比如,显示第 20 行到第 25 行之间的内容,同样使用 head 命令组合 tail 命令,如下:

head -25 file_name | tail +20

或者使用 sed 命令

sed -n '20,25p' lines.txt

下面我们详细看看。

使用 head 命令和 tail 命令组合来显示文件的特定行

这个方法是我认为最简单的方法,且经常使用。

打印某一行内容

head 命令和 tail 命令都用于在终端中显示文件的内容。

使用如下语法显示文件中指定的第 x 行:

head -x file_name | tail +x

上述代码中的 x 即为行号,比如上文中提到的例子中要显示第 13 行:

$ head -13 lines.txt | tail +13
This is line number 13


关于 head 和 tail 命令,即使对其不熟悉,根据名字也能猜出来,head 命令从文件的开头获取文件内容,而 tail 命令从文件的末尾开始获取内容。

head -x 命令部分,是获取文件的前 x 行,然后将这个结果重定向到 tail 命令,而 tail 命令将显示从第 x 行开始的内容。

所以,上述命令的逻辑就是首先获取文件的开头 13 行内容,然后在从其第 13 行开始到最后的所有内容,很显然获取的就只有第 13 行这一行。

获取指定范围的行

现在我们使用 head 和 tail 组合命令来显示某一范围的内容。

要显示文件的第 x 行到第 y 行(同时会包含第 x 行和第 y 行),可以使用如下语法命令:

head -y lines.txt | tail +x

比如,假如我们要打印文件中第 20 行到第 25 行中的内容,如下代码:

$ head -25 lines.txt | tail +20
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25


使用 sed 命令显示文件中的特定行

使用 sed 命令,可以有多种打印特定行内容的方法。

比如,要显示文件的第 10 行,可以使用如下方式:

sed -n '10p' file.txt

如果要打印从第 x 行到第 y 行,可使用如下方法:

$ sed -n '3,7p' lines.txt 
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7


使用 awk 命令打印文件中的指定行

awk 命令可能看起来比较复杂,使用它需要有一个学习的过程。但与 sed 一样,awk 在编辑和操作文件内容方面功能很强大。

使用 awk 查看文件的第 n 行,可参考如下代码:

$ awk 'NR==5' lines.txt 
This is line number 5


上述代码会显示文件的第 5 行,NR 表示“当前记录编号”。

打印从 x 行到第 y 行,可使用如下方式:

$ awk 'NR>=20 && NR<=25' lines.txt 
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25


其语法与大多数编程语言的语法类似。

责任编辑:庞桂玉 来源: TIAP
相关推荐

2023-02-07 09:49:26

Linux命令行合并文件

2022-11-02 08:20:43

Linux

2023-03-21 09:31:30

Linux命令行文件夹

2022-10-14 19:30:29

Linux

2019-08-15 15:00:31

Linux命令行PDF

2021-05-20 12:16:17

Linux命令Axel

2018-04-25 10:46:05

Linux命令行日历

2014-05-04 10:58:18

Linux命令行Linux发行版

2022-10-13 19:23:21

Linux命令行IP 地址

2015-02-10 10:05:11

LinuxLinux命令

2022-11-18 12:47:51

LinuxAWS命令行工具

2018-03-29 15:58:55

Linux命令行编辑器

2022-10-18 14:52:36

2016-10-20 09:57:58

Linux转换工具

2015-12-16 16:01:13

2021-11-26 09:58:37

Linux命令浏览器

2009-08-06 20:14:16

linux命令行模式linux命令行修改系统时间

2013-11-06 14:36:30

Linux命令行工具gcp

2014-09-16 10:09:40

Linux

2015-10-19 17:16:10

天气预报命令行Linux
点赞
收藏

51CTO技术栈公众号