文章目录
- 1.cat_从第一行输出,不分页
- 2.tac_从最后一行开始输出,不分页
- 3.more/less_可控制从第几行开始输出,可自定义每页显示几行
- 4.head/tail_可以输出任意行
- 5.sed_p输出任意行
1.cat_从第一行输出,不分页
//正向查看一个文件,即从文件的第一行开始输出
cat text1
//将text1和text2合并后放入text文件中
cat text1 text2 > text
2.tac_从最后一行开始输出,不分页
从文件最后一行开始反向查看内容
tac file
3.more/less_可控制从第几行开始输出,可自定义每页显示几行
More和less的差别:less可以快速定位到最后一页。
//显示文件中从第三行起的内容
more +3 text1
//每页显示2行
more -2 text1
//ls命令,管道,more命令并用
ls -l | more -5
more:
回车:向下n行,需要定义,默认为1行。
空格键:向下滚动一屏或Ctrl+F
B:返回上一层或Ctrl+B
q:退出moreless:
回车:向下一行。
空格键:前下一页或page down。
b:后退一页 或 page up。
q:退出。
d:前进半页。
u:后退半页
4.head/tail_可以输出任意行
命令语法:head/tail [参数] [文件]
实例:
head:显示文件的前几行,默认10行
head -n 3 == head -3 可以直接跟行数
head -n 5 text //显示text文件的前5行。
head -c 3 text //显示text文件的前3个字符。
head -n -5 text //显示除了最后5行之外的所有行
tail: 显示文件最后几行,默认10行
tail -n 4 log //显示log文件的最后4行
tail -n +7 log //log文件从第7行开始显示。
5.sed_p输出任意行
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
命令语法:sed [-nefr] [动作]
选项:
option | 功能 |
-n | 使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 |
-e | 直接在命令列模式上进行 sed 的动作编辑; |
-f | 直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作; |
-r | sed 的动作支持的是延伸型正规表示法的语法 |
-i | 直接修改读取的文件内容,而不是输出到终端。 |
动作说明:
function | 功能 |
a | 新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行) |
c | 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! |
d | 删除,因为是删除,所以 d 后面通常不接其他; |
i | 插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行) |
p | 列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ |
s | 取代,通常这个 s 的动作可以搭配正规表示法 |
//只查看文件的第5行到第10行
sed -n '5,10p' file
//删除第3行到最后一行
nl /etc/passwd | sed '3,$d'
//在第二行前加入drink tea
nl /etc/passwd | sed '2i drink tea'
//在第二行后加入drink tea
nl /etc/passwd | sed '2a drink tea'
// 在第二行后增加两行
nl /etc/passwd | sed '2a Drink tea or ......\
> drink beer ?'
//将第2-8行内容替换为 Never say ever
nl /etc/passwd| sed '2,8c Never say ever'
如果文件特别大,有1000w行,要在第567行加文字,使用vim可能会疯掉。用sed!
sed -i ‘567a # The text add’ file.txt