1  --第4天--文本处理工具和正则表达式
 2
 3  各种文本工具来查看,分析,统计文本
 4
 5  文本查看工具查看:
 6  cat
 7  -n      显示行号
 8  -b      只给非空行编号
 9  -E      显示每行的结尾,用$表示
10  -s      压缩多个空白行只显示1行
11  cat file1 > file2       查看文件到标准输出重定向到另外一个文件,实现替换或者追加。 
12
13  tac
14  反向输出文件到标准输出,正好与cat相反
15
16  rev     可以把文件内容按照逆序读出来。
17
18  more
19  将文档分页显示
20
21  less
22  和more一样,并且支持搜索,使用/
23  less命令是man命令的分页器
24
25  head:默认只读取前10行内容
26  -c 10   读取前10个字符
27  -n#     读取#行内容
28
29
30  tail:默认读取后10行内容
31  -c
32  -n#
33  -f      可以追踪文件更改,常用于日志文件监控 比如:tail -f /var/log/messages
34
35  getent
36  查看用户和组相关文件,实例:genent passwd, getent shadow...
37
38  vipw
39  相当于:vim /etc/passwd
40
41
42  cut     切割
43  -b      按指定字节数截取        echo "1:2:3:4"|cut -b1-3        --> 1:2
44  -c      按指定字符数截取        echo "1:2:3:4"|cut -c1-3        --> 1:2
45  -d      指定分隔符(delimiter)
46  -f      指定要截取的列,与-d合用echo "1:2:3:4"|cut -d:-f3        --> 3
47
48  paste   合并2个文件中行号相同的行为一行,可以用于将2个文件水平合并
49  paste file1 file2
50  -d      指定分隔符,默认为tab
51  -s      将每个文件内容输出在一行
52
53
54  文本分析工具:
55
56  wc      文本数据统计
57  wc file         每列表示:行数,单词数,字符数,文件名
58  -l      行
59  -c      字节数
60  -w      单词数
61
62  sort    排序
63  -t      指定分隔符
64  -k      指定特定的列,按照这列的内容,进行特定规则的排序,默认按照从小到大,重新调整文档每行的位置,配合一些选项也可以改变
65  -r      反向排序
66  -n      按照数字排序
67  -R      随机排序
68  -u      删除重复的行
69  ...
70
71  uniq    删除前后衔接的相同的行,与sort -u不一样
72  -c      统计重复行的次数,常与SORT一起用        sort file1.txt|uniq -c
73
74  diff file1 file2        比较2个文件内容
75  -u      可以生成补丁文件-->xxx.patch
76  patch -b xxx.patch file2        可以将file2恢复
77
78
79  grep    使用模式过滤文本,处理文本行。支持正则表达式
80  匹配字符串:grep "abc"
81  匹配文件中字符串:cat /abc/test.txt |grep "abc"
82  支持匹配变量:grep "$USER" /etc/passwd
83  支持匹配命令执行结果:grep `hostname` /etc/hostname
84
85  -m #    匹配到的结果只显示前#行
86  -i      忽略大小写
87  -v      显示未匹配的行
88  -n      显示行号
89  -H      把文件名显示出来
90  -c      显示匹配了多少行
91  -o      只显示匹配到的字符
92  -q      静默模式,结果保存在$?变量中,0表示有匹配项
93  -w      匹配整个单词
94
95  -E      等价于egrep
96  -F      等价于fgrep     不支持正则表达式
97  参考:man 7 regex
98
99  grep支持基础正则表达式和扩展正则表达式,其中扩展正则表达式,就是把基础正则表达式的\(转义符),去掉!
	 100  分为4类:字符匹配,匹配次数,位置锚定,分组
	 101
	 102  字符匹配:[0-9],[a-z],[A-Z],[:digit:],[:alpha:],[:alnum:],[:lower:],[:upper:][:blank:],[:space:],[cntrl],[:graph:],[:print:]
	 103  .       单个任意字符
	 104  []      指定范围内的单个字符
	 105  [^]     指定范围外的单个字符
	 106
	 107  次数匹配:
	 108  *       0次1次或多次
	 109  +       1次或多次
	 110  ?      1次或0次
	 111  {m}     m次
	 112  {,m}    0-m次
	 113  {m,}    m~无数次
	 114  {m,n}   m~n次
	 115  .*      任意字符任意次
	 116
	 117  位置锚定:
	 118  ^               行首
	 119  $               行尾
	 120  \<              词首
	 121  \>              词尾
	 122  ^$              空行
	 123  ^pattern$       匹配整行
	 124  \b              同样可以表示词首或词尾
	 125
	 126
	 127  分组:
	 128  分组即用()将pattern包含,支持后向引用!
	 129
	 130
	 131  以下博客地址为上面正则表达式的一些应用:https://blog.51cto.com/13182370/2360917