`

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

阅读更多

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

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

将 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

 

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

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

 

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

 

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

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

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

 

    tac 命令逆序排序文件

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

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

 

来自:http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/l-tiptex3/index.html?S_TACT=105AGX52&S_CMP=content

2
0
分享到:
评论

相关推荐

    Shell脚本逐行读取文本文件(不改变文本格式)

    另一种不依赖IFS的方法是使用`head`和`tail`命令组合,逐行读取文件: ```bash #!/bin/bash testfile=$1 x=$(wc -l $testfile | awk '{print $1}') i=1 while [ $i -le $x ] do echo "$(head -n $i $testfile | ...

    Shell脚本文件读取完全手册:技巧与实践

    通过掌握cat、head、tail、sed、awk、grep等命令的使用,我们可以编写出功能强大、灵活多变的Shell脚本。本文详细介绍了这些技术,并提供了丰富的代码示例,帮助读者深入理解如何在Shell脚本中读取文件。随着你对...

    Linux文本查看命令及其选项详解(cat,head,tail)

    除了上述选项,`cat`、`head`和`tail`还有其他的高级用法,例如与其他命令如`grep`、`sed`和`awk`组合使用,进行更复杂的文本处理和过滤。了解这些基础命令的选项和用法,是成为Linux高手的重要一步。 总的来说,`...

    head-tail:猫文本.txt | 头-3 | 尾-1

    这个“head-tail:猫文本.txt | 头-3 | 尾-1”标题和描述可能指的是一个用JavaScript编写的程序,它用于处理文本文件,特别是名为"猫文本.txt"的文件。程序的功能可能是提取文件中前三个单词("头-3")以及最后一个...

    Linux文本处理命令合集

    - **sed** 命令是一种流编辑器,用于过滤和转换文本。 - `sed -i 's/pattern/replace_string/g' file`:在文件中搜索`pattern`并将其替换为`replace_string`。`-i`表示就地替换,`g`表示全局替换。 - 已匹配字符串...

    dos读取文件某一行.rar

    描述中提到“bat文件读取文件最后一行”,表明里面有一个名为“read.bat”的批处理文件,用于演示如何读取文本文件的最后一行。标签“bat dos”进一步确认了这个操作是在DOS命令行界面通过批处理脚本来完成的。 ...

    r 数据读取

    本文将详细介绍如何在R中读取不同类型的文件,并探讨一些关键参数的使用方法。 #### 一、路径设置与基本读取方式 **路径设置**:在读取文件之前,通常需要先设置工作目录。这可以通过`setwd()`函数实现,例如: ``...

    Linux查看命令

    `sed` 是一个强大的流编辑器,可以用来处理文本文件,包括查找、替换和删除等操作。使用 `-n` 参数和 `p` 命令可以查看文件中的特定行范围。 **命令格式**: ``` sed [-n '起始行,结束行p'] 文件名 ``` **示例**:...

    一天一个shell命令 linux文本操作系列-head,tail命令详解

    head命令中文介绍: 用法:head [选项]... [文件]... 将每个指定文件的头10 行显示到标准输出。 如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。 如果不指定文件,或者文件为-,则从标准输入读取...

    文本文件按行拆分多个成文件

    - Bash脚本:结合`head`和`tail`命令,配合重定向操作符实现拆分。 2. 使用工具: - Linux/Unix命令行:`split`命令可以根据行数或大小拆分文件。 - Windows批处理:可以通过`for /F`循环和`more`命令实现拆分。...

    Matlab读取CSV文件.zip

    读取表格后,你可以使用`head`和`tail`函数查看数据的头部和尾部,或者使用索引或逻辑表达式来切片数据。 六、数据导出 完成处理后,你可以使用`writetable`函数将数据写回CSV文件或其他格式,如Excel: ```...

    Linux操作命令三.doc

    本文档将介绍四个常用的Linux命令:more命令、less命令、head命令和tail命令。 一、more命令 more命令是一种分页显示文本文件内容的命令,可以逐页阅读文件内容。其常用参数包括: * -n:定义显示的行数 * +n:从...

    超实用Linux下命令行.doc

    使用 od 命令可以以二进制方式读取文件的内容。 5. find 查找命令:find /home -size +1000M 使用 find 命令可以查找文件,-size 选项可以查找大于 1000M 的文件。 6. VIM 常用命令 使用 VIM 编辑器可以进行文本...

    Teach Yourself Shell Programming in 24 Hours

    - **head和tail命令**:展示文件的前几行或后几行。 - **使用grep**:搜索文本文件中的模式。 - **计数单词**:统计文件中的单词数量。 - **总结**:这些工具简化了文本处理的任务。 **第十六章:使用正则表达式...

    快乐的Linux命令行

    "`来输出文本,或者使用`date`查看当前日期和时间。这些简单命令可以帮助新手熟悉基本的命令行语法。 - **结束终端会话**:使用`exit`命令可以关闭当前的终端会话。如果希望保存命令历史记录以便下次继续使用,可以...

    Linux-查看日志指令

    有时候我们需要查看某个文件的中间部分,这时可以结合使用`cat`、`tail`和`head`命令实现这一功能。 ##### 示例 - 从第3000行开始,显示1000行,即显示3000~3999行: ```bash cat filename | tail -n +3000 | ...

    R语言与数据分析.pptx

    * head():读取前面几行数据 * tail():读取后面几行数据 * str():查看数据的结构 * fix()和edit():数据编辑框 * is.na():查看缺失值 * as.():格式转换相关函数 * cbind():按列拼接数据 * rbind():按行拼接...

    Linux shell 脚本全面学习

    - `sed`: 流编辑器,用于文本转换。 - `awk`: 用于文本报告处理。 - **概念**:管道、重定向与反引号 - **管道**:使用 `|` 符号连接多个命令,前一个命令的输出成为后一个命令的输入。 - **重定向**:使用 `...

Global site tag (gtag.js) - Google Analytics