本章内容:
一、各种文本工具来查看、分析,统计文本文件
二、grep
三、正则表达式
四、扩展正则表达式
五、Sed
具体内容如下:
一、抽取文本的工具:
文件内容:less和cat
文件截取:head和tail
按列抽取:cut
按关键字抽取:grep
1.文件查看命令:cat, tac,rev
cat [OPTION]... [FILE]...
-E: 显示行结束符$
-T:显示Tab键
-v:显示Windows的空格字符
-A:显示所有控制符
-n: 对显示出的每一行进行编号
-b:非空行编号
-s:压缩连续的空行成一行
cat 也可以作为一个简单的文本编辑器
rev命令,可以逆序显示字符
2.分页查看内容:more,less
more [OPTIONS...] FILE...
-d: 显示翻页及退出提示 (空格 是继续看下一屏,q是退出)
!command:在看文件的时候可以执行命令
less:一页一页地查看文件或STDIN输出
查看时有用的命令包括:
/,?文本搜索文本
n/N跳到下一个or 上一个匹配
less命令是man命令使用的分页器
3.head,tail显示文本前行或后行内容
head
head [OPTION]... [FILE]...
-c #: 指定获取前#字节
-n #: 指定获取前#行
-# : 指定行数
tail
tail [OPTION]... [FILE]...
-c #: 指定获取后#字节
-n #: 指定获取后#行
-# :同上
-f: 跟踪显示文件新追加的内容,常用日志监控
4.按列抽取文本cut和合并文件paste
cut 显示文件或STDIN数据的指定列
cut [OPTION]... [FILE]...
-d DELIMITER: 指明分隔符,默认tab
-f FILEDS:
#: 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
混合使用:1-3,7
--output-delimiter=STRING指定输出分隔符(也可以用tr命令转换分隔符)
-c按字符切割
举例:
cut -d: -f1 /etc/passwd
cat /etc/passwd|cut -d: -f7
cut -c2-5 /usr/share/dict/words
paste 合并两个文件同行号的列到一行
paste [OPTION]... [FILE]...
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
如:paste f1 f2
paste -s f1 f2
5.wc,sort ,diff和path 分析文本工具
wc (word count)收集文本统计数据
计数单词总数、行总数、字节总数和字符总数
可以对文件或STDIN中的数据运行,不跟任何选项,直接根文档,则会把行数、次数、和字符数依次输出。
选项:
使用-l来只计数行数
使用-w来只计数单词总数
使用-c来只计数字节总数
使用-m来只计数字符总数
6.sort文本排序
把整理过的文本对列进行排序,显示在STDOUT,不改变原始文件。
$sort [options] file(s)
常用选项:
-r执行反方向(由上至下)整理
-n执行按数字大小整理
-f选项忽略(fold)字符串中的字符大小写
-u选项(独特,unique)删除输出中的重复行
-t c选项使用c做为字段界定符
-k X选项按照使用c字符分隔的X列来整理能够使用多次
7.uniq命令:
从输入中删除重复的前后相接的行(相邻的行)
uniq[OPTION]... [FILE]...
-c: 显示每行重复出现的次数;
-d: 仅显示重复过的行;
-u: 仅显示不曾重复的行;
连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq-c
8.diff命令
比较两个文件之间的区别
举例如下:
$diff foo.conf-brokenfoo. conf-works
5c5
<use_widgets=no
---
>use_widgets=yes
注明第5行有区别(改变)
9.patch 复制对文件的改变
diff命令的输出被保存在一种叫做“补丁”的文件中
使用-u选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件。
patch命令复制在其它文件中进行的改变(要谨慎使用 !)
用-b选项来自动备份改变了的文件
练习:
1、找出ifconfig命令结果中本机的所有IPv4地址
2、查出分区空间使用率的最大百分比值
3、查出用户UID最大值的用户名、UID及shell类型
4、查出/tmp的权限,以数字方式显示
5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
原文地址:http://1992tao.blog.51cto.com/11606804/1835402