工作中会有很多千奇百怪的需求,比如:如何在 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 Linux(责任编辑:时尚)
农业生产形势稳定 2022年一季度四川广元GDP达到240.69亿元
评价结果显示:零售业务对商业银行收益可持续能力的贡献不断增强
CDN业务云化升级 平安科技与蓝汛ChinaCache正式签署合作协议