假定您想只处理文件的一部分,譬如头几行或后几行,那您该怎么做呢?请使用
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
|
如果您想让
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
,比较其结果。
来自:http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/l-tiptex3/index.html?S_TACT=105AGX52&S_CMP=content
分享到:
相关推荐
另一种不依赖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 | ...
通过掌握cat、head、tail、sed、awk、grep等命令的使用,我们可以编写出功能强大、灵活多变的Shell脚本。本文详细介绍了这些技术,并提供了丰富的代码示例,帮助读者深入理解如何在Shell脚本中读取文件。随着你对...
除了上述选项,`cat`、`head`和`tail`还有其他的高级用法,例如与其他命令如`grep`、`sed`和`awk`组合使用,进行更复杂的文本处理和过滤。了解这些基础命令的选项和用法,是成为Linux高手的重要一步。 总的来说,`...
这个“head-tail:猫文本.txt | 头-3 | 尾-1”标题和描述可能指的是一个用JavaScript编写的程序,它用于处理文本文件,特别是名为"猫文本.txt"的文件。程序的功能可能是提取文件中前三个单词("头-3")以及最后一个...
- **sed** 命令是一种流编辑器,用于过滤和转换文本。 - `sed -i 's/pattern/replace_string/g' file`:在文件中搜索`pattern`并将其替换为`replace_string`。`-i`表示就地替换,`g`表示全局替换。 - 已匹配字符串...
描述中提到“bat文件读取文件最后一行”,表明里面有一个名为“read.bat”的批处理文件,用于演示如何读取文本文件的最后一行。标签“bat dos”进一步确认了这个操作是在DOS命令行界面通过批处理脚本来完成的。 ...
本文将详细介绍如何在R中读取不同类型的文件,并探讨一些关键参数的使用方法。 #### 一、路径设置与基本读取方式 **路径设置**:在读取文件之前,通常需要先设置工作目录。这可以通过`setwd()`函数实现,例如: ``...
`sed` 是一个强大的流编辑器,可以用来处理文本文件,包括查找、替换和删除等操作。使用 `-n` 参数和 `p` 命令可以查看文件中的特定行范围。 **命令格式**: ``` sed [-n '起始行,结束行p'] 文件名 ``` **示例**:...
head命令中文介绍: 用法:head [选项]... [文件]... 将每个指定文件的头10 行显示到标准输出。 如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。 如果不指定文件,或者文件为-,则从标准输入读取...
- Bash脚本:结合`head`和`tail`命令,配合重定向操作符实现拆分。 2. 使用工具: - Linux/Unix命令行:`split`命令可以根据行数或大小拆分文件。 - Windows批处理:可以通过`for /F`循环和`more`命令实现拆分。...
读取表格后,你可以使用`head`和`tail`函数查看数据的头部和尾部,或者使用索引或逻辑表达式来切片数据。 六、数据导出 完成处理后,你可以使用`writetable`函数将数据写回CSV文件或其他格式,如Excel: ```...
本文档将介绍四个常用的Linux命令:more命令、less命令、head命令和tail命令。 一、more命令 more命令是一种分页显示文本文件内容的命令,可以逐页阅读文件内容。其常用参数包括: * -n:定义显示的行数 * +n:从...
使用 od 命令可以以二进制方式读取文件的内容。 5. find 查找命令:find /home -size +1000M 使用 find 命令可以查找文件,-size 选项可以查找大于 1000M 的文件。 6. VIM 常用命令 使用 VIM 编辑器可以进行文本...
- **head和tail命令**:展示文件的前几行或后几行。 - **使用grep**:搜索文本文件中的模式。 - **计数单词**:统计文件中的单词数量。 - **总结**:这些工具简化了文本处理的任务。 **第十六章:使用正则表达式...
"`来输出文本,或者使用`date`查看当前日期和时间。这些简单命令可以帮助新手熟悉基本的命令行语法。 - **结束终端会话**:使用`exit`命令可以关闭当前的终端会话。如果希望保存命令历史记录以便下次继续使用,可以...
有时候我们需要查看某个文件的中间部分,这时可以结合使用`cat`、`tail`和`head`命令实现这一功能。 ##### 示例 - 从第3000行开始,显示1000行,即显示3000~3999行: ```bash cat filename | tail -n +3000 | ...
* head():读取前面几行数据 * tail():读取后面几行数据 * str():查看数据的结构 * fix()和edit():数据编辑框 * is.na():查看缺失值 * as.():格式转换相关函数 * cbind():按列拼接数据 * rbind():按行拼接...
- `sed`: 流编辑器,用于文本转换。 - `awk`: 用于文本报告处理。 - **概念**:管道、重定向与反引号 - **管道**:使用 `|` 符号连接多个命令,前一个命令的输出成为后一个命令的输入。 - **重定向**:使用 `...