输出指定行的四种方法 (后两种较难,使用次数较少)
1、head
head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。
命令格式:
head [参数] [文件]
参数:
- -q 隐藏文件名
- -v 显示文件名
- -c<数目> 显示的字节数。
- -n<行数> 显示的行数。
#要显示 runoob_notes.log 文件的开头 10 行,请输入以下命令:
head runoob_notes.log
#显示 notes.log 文件的开头 5 行,请输入以下命令:
head -n 5 runoob_notes.log
#显示文件前 20 个字节:
head -c 20 runoob_notes.log
2、tail
tail 命令可用于查看文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
命令格式:
tail [参数] [文件]
参数:
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数
- -n<行数> 显示文件的尾部 n 行内容
- --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
- -q, --quiet, --silent 从不输出给出文件名的首部
- -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
编号 | 功能 | 命令 |
1 | 显示文件最后10行(默认10行) | tail xxx1.txt |
2 | 显示文件最后3行 | tail -n 3 xxx1.txt |
3 | 显示文件除了前三行的所有行 | tail -n +3 xxx1.txt |
4 | 显示文件最后3个字节 | tail -c 3 xxx1.txt |
5 | 显示文件除了前3个字节的所有字节 | tail -c +3 xxx1.txt |
6 | 不显示文件名(默认就不显示) | tail -q xxx1.txt |
7 | 显示文件名 | tail -v xxx1.txt |
8 | 显示多个文件的后5行内容 | tail -n 5 xxx1.txt xxx2.txt |
9 | 实时监控文件最后5行内容 | tail -f -n 5 xxx1.txt |
10 | 每隔3秒更新文件最后5行的内容 | tail -f -s 3 -n 5 xxx1.txt |
11 | 某个pid为$(PID)的进程结束后,停止刷新文件内容 | tail -f --pid $(PID) -n 3 xxx1.txt |
3、awk
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
NR | 已经读出的记录数,就是行号,从1开始 |
FNR | 各文件分别计数的行号 |
awk NR==9 file.txt
awk FNR==9 file.txt
4、sed
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
- -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
- -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
- -h或--help 显示帮助。
- -n或--quiet或--silent 仅显示script处理后的结果。
- -V或--version 显示版本信息。
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦!
sed -n '9p' file.txt
sed -n '9,10p' file.txt