分享
 
 
 

使用head 和tail以块方式读取文本流

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

认识您的文本实用程序

Jacek Artymiak(jacek@artymiak.com)

自由作家兼顾问

Jacek 在本技巧文章中介绍了 head 和 tail 命令,它们对于以块方式处理静态和动态文件中的数据非常有用。

假定您想只处理文件的一部分,譬如头几行或后几行,那您该怎么做呢?请使用 head(它将头 10 行发送至标准输出)或 tail(它将后 10 行发送至标准输出)。

您可以通过使用 -n 选项改变这些命令发送至其标准输出的行数(当然,输出结果将随 XF86Config 文件的内容而不同):

清单 1. 将 XF86Config 中选定行数的内容发送至标准输出$ head -n 4 /etc/X11/XF86Config

# File generated by anaconda.

# **********************************************************************

# Refer to the XF86Config(4/5) man page for details about the format of

# this file.

$ tail -n 4 /etc/X11/XF86Config

Modes "1600x1200"

ViewPort 0 0

EndSubsection

EndSection

如果您想让 head 或 tail 以字节而不是以行为单位,那该怎么办呢?您可以用 -c 选项代替 -n 选项。因此,要显示前 200 个字符,请使用 head -c 200 file,或者使用 tail -c 200 file 来显示后 200 个字符。如果数字后面跟有 b(表示块(block)),那么这个数字将被乘以 512。类似地,跟有 k(表示千字节(kilobyte))表示用 1024 去乘给定的数字,而跟有 m(表示兆字节(megabyte))表示用 1048576 字节去乘给定的数字。

请记住,head file1 file2 file3 和 cat file1 file2 file3 | head 之间有重大差别。前者将打印每个文件指定行数的内容,不同文件的内容之间用头信息隔开,头信息以 ==> 后跟文件名开头。后者将打印由 cat 命令后所列文件组成的输入流中指定行数的内容,但将把输入流作为单个文件对待。可以使用 -q(表示静默(quiet))选项关闭文件名头信息。与 -q 相反的是 -v(表示详列(verbose))。

假如您要处理的文件在处理期间一直在发生变化(比如,当您让 head 或 tail 读取来自正在被另一个命令写入的文件的数据时,就是这种情况),请使用 -f 选项让 tail 持续读取来自指定文件的数据并将这些数据发送至 tail 自己的标准输出中。通过管道发送数据时该选项会被忽略。因此,cat file | tail -f 将不会得到所期望的结果,但 tail -f file 则可以。

(如果 tail 正在读取的文件不止一个,那么各行内容之间将用标准头信息隔开,以指明它们来自哪个文件,标准头信息以 ==> 开头。)

这个选项用于监视系统日志再合适不过,譬如,在单独的终端窗口(或单独的控制台)中执行的 tail -f /var/log/access.log 将持续打印每次点击后新添加的 Apache 访问日志条目,一直到您用 Ctrl-C 停止它为止。

通过组合使用 head 和 tail,可以从文件的中间部分读取给定长度的一块数据!下面说明如何做到:假定您想从文件开头算起第 1000 字节处开始读取一块 789 字节的数据。可以使用 cat file | head -c 1788 | tail -c 789 来解决这一问题。

使用 tac 命令逆序排序文件

如果您想对文件中的各行进行逆序排序,该怎么做呢?这就要用到 tac 命令。(请注意,tac 由 cat 逆序拼写而成。)该命令对所列出的文件中的各行或各段进行逆序排序。

该命令不能逆序排序各文件的顺序 — 这个任务您得自己做,以逆向顺序在 tac 命令后列出各文件即可。作为说明 tac 的工作原理的示例,请在您的主目录中对一些文件使用 ls -l | tail 和 ls -l | tail | tac,比较其结果。

您有问题或意见吗?我愿洗耳恭听 — 请将邮件发送至 jacek@artymiak.com。

下回我们将看看 sort 和 tsort 命令。到时候见!

参考资料

本系列中对文本实用程序的介绍对系统的 man 和 info 页中的信息是一个补充。要学习更多关于这方面的知识,请打开一个新的终端窗口并输入 man head 或 info tail — 或者您可以打开一个新的浏览器窗口并查看 gnu.org 上的 head 和 tail 手册页。

学习关于来自 Jargon 文件的尾递归的知识,您可以从中学到比您曾想学到的更多。

您可以在 GNU text utilities 手册(位于 MIT 的同一目录的展开视图,在 MIT,您还可以找到众多更加有用的 GNU 工具的列表)找到关于我们了解并喜欢的这些工具(它们都是文本实用程序)的更多信息。

Windows 用户可以在 Cygwin 软件包中找到这些工具。

Mac OS X 用户可能想尝试 Fink,它在 Mac OS X 下安装丰富的 UNIX 环境。

您碰到了一些问题?请查阅 GNU 文本实用程序常见问题解答。

在钻研我们这里讲述的工具之前还需要更多介绍性的信息?您可以尝试从 UNIXhelp for users 起步。

或者尝试本系列的介绍性文章“了解 textutils”(developerWorks,2002 年 10 月)。

我们上一次在这个地方的“用 cat 合并文件”(developerWorks,2002 年 10 月)一文中讨论了 cat。

这一领域的经典著作是 UNIX Power Tools,Jerry Peek、Tim O'Reilly 和 Mike Loukides 著(O'Reilly and Associates,1997);ISBN 1-56592-260-3。

在 developerWorks Linux 专区查找您正在寻找的 Linux 参考资料。

关于作者

Jacek Artymiak 以自由顾问、开发人员和作家为业。自 1991 年来,他一直在为 UNIX 和各种 BSD 操作系统的各种商业及免费版本(AIX、HP-UX、IRIX、Solaris、Linux、FreeBSD、NetBSD、OpenBSD 和其他)以及 MS-DOS、Microsoft Windows、Mac OS 和 Mac OS X 开发软件。Jacek 专攻商业及金融应用程序开发、Web 设计、网络安全性、计算机图形、动画和多媒体。他是撰写技术主题著作的多产作家,还与别人合著了“Install, Configure, and Customize Slackware Linux”(Prima Tech,2000)和“StarOffice for Linux Bible”(IDG Books,2000)。Jacek 的许多软件项目都可以在 SourceForge 中找到。您可以在他的个人 Web 站点了解关于他的更多信息,并通过 jacek@artymiak.com 与他联系。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有