作为一个系统管理员,文本处理功能是经常使用的,熟练地使用各种文本工具有助于提高工作效率,从繁忙的工作中早点解脱。下面就来介绍处理文本的常用命令。
处理文本的命令大致分为:
查看文件内容:cat、less、more
按行抽取文件内容:head、tail
按列抽文件内容取:cut
统计文本:wc
整理文本:sort、uniq
比较文本:diff、patch
一、查看文件内容
1、cat:读取一个或多个文件,然后复制到标准输出。
用法:cat [options] file1 [file2…]
常用的options有:
-n: 对显示出的每一行进行编号
-b: 对显示出的非空行进行编号
-s: 压缩连续的空行成一行
-A: 显示所有的控制符,如:tab、换行、行结束符等。
-E: 显示行结束符。在linux,行结束符用$标识。
压缩连续的空行:
2、less和more:分页查看工具
用法:less|more file
“回车”:查看下一页
“b”:查看上一页
“enter”:查看下一行
“p“:查看上一行。
区别:more不能使用”p”查看上一行,并且more在查看到文件底部时,会退出查看,而less仍然是查看状态。
总结:在查看内容较少的文件时,建议使用cat,在查看文件内容较多的文件时,建议使用less。
二、按行截取文件内容
1、查看文件的前n行:head
用法:head [options] file
常用的options:
-n #:指定获取前#行的内容。如果未指定,默认显示前10行。
例:显示/etc/passwd前8行的内容
2、查看文件的后n行:tail
用法:tail [options] file
常用options:
-n #: 指定获取后#行的内容。如果未指定,默认显示后10行。
-f: 跟踪显示文件新追加的内容,常用日志监控
tail –f 可以简写为tailf
例2.1:显示/etc/passwd后8行的内容:
例2.2:追踪查看/var/log/messages文件。
若只想查看新增的日志内容,可以指定:tailf –n 0 /var/log/messages
退出查看“ctrl + c“
三、按列抽取文本:cut
文本中的内容,并不是每一行都是我们需要的。比如,我只需要/etc/passwd文件中的用户名、用户id、用户登录shell,这时,就需要按列队文本进行处理。
用法: cut [options] file
常用options:
-d Delimiter:指明分隔符,默认为tab。也可以为“ “(表示空白)、”:”等。
-f Fileds: 指明显示分割后的那些列。
显示模式:
1)、#:第#个字段
2)、#,#: 离散的多个字段。如 1,3,7
3)、#-#:连续的多个字段
4)、混合使用,将上述三种模式混合。如:1,3,5-7.
可以和管道配合,这样能观察文本的格式特点,对其进行分隔
例:显示/etc/passwd文件中的用户名、用户id、用户登录shell。
也可以不和管道配合,直接切割文件
cut命令也常合其他系统管理命令配合使用,对其中的某个参数进行监控。
例: 取出磁盘空间使用率
tr –s “ “ “:”:将多余的空格合并为一个,并替换为“:“。
四、统计文本wc
法:wc [options] file
常用options:
-l :只统计行数
-w:统计单词数
例:统计/etc/passwd有多少行,有多少个单词。
五、整理文本
对文本进行排序,去掉重复的行等。
5.1、sort
用法:sort [options] file
常用options:
-n :按数字进行排序。不指定默认按字符进行排序,数字也被当作字符
-r:逆向排序。
-u:删除输出中重复的行
-t Delimiter:指定分隔符
-k #:按分隔后的知道字段进行排序。
例:/etc/passwd按id进行排序
/etc/passwd按id逆向排序
5.2、uniq:删除重复的前后相接的行
用法:unip [options] file
常用options:
-c :显示每行重复出现的次数
-d :仅显示重复过的行
-u :仅显示不曾重复的行。
例:统计当前远程登陆到本机的ip地址及其连接数
六、文本比较:diff
用法:diff file1 file2 比较两个文本之间的区别。
diff命令的输出被保存在一种叫做“补丁”的文件中,配合patch命令对文件版本管理。
常用options:
-u 选项来输出“统一的( unified)” diff格式文件,最适用于补丁文件。
-b 选项来自动备份改变了的文件
例:复制/etc/fstab到当前文件,一名为fs1,一名为fs2,对fs2进行修改,在第一行添加“last modify“。之后通过补丁将fs1的内容更新为fs2的内容。
文本处理三剑客grep、sed、awk放在后续的文章中介绍
原创文章,作者:M20-1钟明波,如若转载,请注明出处:http://www.178linux.com/29753