前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >用head和tail取文件的第5行到第10行的内容

用head和tail取文件的第5行到第10行的内容

作者头像
入门笔记
发布2022-06-02 17:48:57
发布2022-06-02 17:48:57
2K00
代码可运行
举报
文章被收录于专栏:入门小站入门小站
运行总次数:0
代码可运行

先回顾一下head和tail的基本用法

Linuxheadtail 命令非常相似。它们默认安装在所有Linux 发行版中。让我们首先了解它们是什么以及它们的用途。

简而言之,顾名思义,该head命令从文件开头打印行,而该tail命令从文件末尾打印行。这两个命令都将结果写入标准输出。

Linux 中的head命令

head 命令的语法 非常简单:

head [OPTIONS] FILES

代码语言:javascript
代码运行次数:0
复制
> head /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
mail:x:8:12::/var/spool/mail:/usr/bin/nologin
ftp:x:14:11::/srv/ftp:/usr/bin/nologin
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin

当然,我们可以在执行命令时定义一些选项以获取自定义输出。

使用 head 命令输出特定数量的行

如果你希望检索与默认 10 行不同的行数,则 -n option 与一个整数一起使用,告诉要检索的行数。

例如,以下命令将显示/etc/passwd文件的前 3 行。

代码语言:javascript
代码运行次数:0
复制
> head -n 3 /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin

使用 head 命令输出特定数量的字节

此外,该 head 命令还可以按字节打印文件内容。只需通过 -c 命令的选项。请记住,换行符计为单个字符,因此如果head打印出换行符,它会将其计为一个字节。

例如,以下命令将显示/etc/passwd文件的前 8 个字节。

代码语言:javascript
代码运行次数:0
复制
> head -c 8 /etc/passwd
root:x:0

使用 head 命令输出多个文件

当然,该 head 命令也可以处理多个文件。例如,以下命令将显示/etc/passwd/etc/group文件的前 3 行。

代码语言:javascript
代码运行次数:0
复制
> head -n 3 /etc/passwd /etc/group
==> /etc/passwd <==
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin

==> /etc/group <==
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:

添加 -q 隐藏文件名

代码语言:javascript
代码运行次数:0
复制
> head -q -n 3 /etc/passwd /etc/group
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
root:x:0:brltty,root
sys:x:3:bin
mem:x:8:

如何在管道中使用 head 命令

head 命令可以通过管道传输到其他命令。在以下示例中,ls 命令的输出通过 管道传输到目录中, head 以显示五个最近修改的文件或文件夹/etc

代码语言:javascript
代码运行次数:0
复制
> ls -t /etc | head -n 5
ld.so.cache
resolv.conf
systemd
libreoffice
profile.d

到现在为止,你应该对如何使用 Linuxhead 命令有了很好的了解 。现在,让我们来看看tail命令。

Linux中的tail命令

Linux 中的 tail 命令与该head命令相同. tail 命令的基本语法是:

tail [OPTIONS] FILES

例如,以下命令将打印/etc/locale.gen文件的最后 10 行。

代码语言:javascript
代码运行次数:0
复制
> tail /etc/locale.gen
#zh_HK.UTF-8 UTF-8
#zh_HK BIG5-HKSCS
#zh_SG.UTF-8 UTF-8
#zh_SG.GBK GBK
#zh_SG GB2312
#zh_TW.EUC-TW EUC-TW
#zh_TW.UTF-8 UTF-8
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1

使用tail命令输出特定数量的行

与该head命令类似,你还可以使用以下命令打印最后几行-n 选项如下图。

代码语言:javascript
代码运行次数:0
复制
> tail -n 3 /etc/locale.gen
#zh_TW BIG5
#zu_ZA.UTF-8 UTF-8
#zu_ZA ISO-8859-1

如何在管道中使用tail命令

此前,我们从管道输出 headls 。我们还可以将其他命令的输出通过管道传输到 tail.

例如,要识别/etc目录中修改时间最早的五个文件或文件夹,并将输出通过管道传输到 tail

代码语言:javascript
代码运行次数:0
复制
> ls -t /etc/ | tail -n 5
wpa_supplicant
libpaper.d
papersize
mdadm.conf
gssapi_mech.conf

使用tail命令观察文件的变化

tail命令中有一个更强大的功能。有时我们要检查的输入文件正在发生变化。例如,正在运行的应用程序可能会将其输出附加到日志文件中。如果我们执行 tail 命令 -f 更改文件上的选项,所有新添加的行都将附加到标准输出。

例如,你可以看到添加到 Nginx 日志文件末尾的新行,因为它们被添加,如下所示:

代码语言:javascript
代码运行次数:0
复制
> tail -f /var/log/nginx/access.log

当每个新的日志条目添加到日志文件时,tail将更新其在终端窗口中的显示。

如何在 Linux 中同时使用 head 和 tail 命令

由于tailhead命令打印文件的不同部分,我们可以将这两者结合起来打印一些文件内容的高级过滤。例如,如果要从任何文件的中间读取内容,则必须同时使用这两个命令。

假设我们想要从文件的第 5 行到第 10 行/etc/passwd。首先, head command 将检索前 10 行, tail command 将从 command 的输出中检索最后 5 行 head

代码语言:javascript
代码运行次数:0
复制
> head -n 10 /etc/passwd | tail -n 5
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:982:982:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:981:981:systemd Network Management:/:/usr/bin/nologin
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux 中的head命令
  • 使用 head 命令输出特定数量的行
  • 使用 head 命令输出特定数量的字节
  • 使用 head 命令输出多个文件
  • 如何在管道中使用 head 命令
  • Linux中的tail命令
  • 使用tail命令输出特定数量的行
  • 如何在管道中使用tail命令
  • 使用tail命令观察文件的变化
  • 如何在 Linux 中同时使用 head 和 tail 命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档