文本处理工具
一.cut 切割
-b:以字节为单位进行分割
-c:以字符为单位进行分割
-d:定义分隔符
-f:指定显示的区域
二. sort 排序
-f:忽略大小写
-b:忽略最前面的空白
-n:以纯数字排序
-r:反向排序
-u:去重
-t:分隔符
-k:以某个区进行排序
-o:将排序结果写入文件
三.uniq:去重
只去除相邻行相同的 所以和sort合用
-c 在每一行前显示出现的次数
-d 显示重复的行
-i 不区分大小写
-u 只显示唯一的行
-s 跳过前几个字符
-w 忽略第几个字符以后的内容
四. wc:word count数量
-w:字数
-l:行数
-L:最长行长度
-c 字节
-m 字符
Linux文件搜索工具
一. grep:文本过滤工具
依赖正则表达式对文本进行处理
--color=auto 默认别名
-i:忽略大小写
-o:只显示匹配到的字符
-v:显示不能被匹配到的行
-E:支持扩展正则表达式
-n:显示行号
-A num 后多少行
-B num 前多少行
-C num 前后多少行
正则表达式:类似通配符
**特殊字符文本编辑模式,字符代表**
正则表达式元字符 类似命令行通配符
1.字符匹配
.:匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[a-Z]:匹配所有字母
[[:upper:]]:匹配大写字母
[[:lower:]]:匹配小写字母
[[:digit:]]: 数字
[[:punct:]]: 标点符号
[[:alpha:]]: 所有字母
[[:space:]]: 空白字符**
2.匹配次数
*:匹配其前面的字符任意次 ---- 0 1 多次
.*:匹配任意长度的任意字符
\?:匹配其前面的字符0次或者1次
\+:匹配其前面的字符至少1次
\{m\}:匹配前面的字符m次
\{m,n\}:匹配前面的字符至少m次至多n次
\{0,m\}:至多m次
\{m,\}:至少m次
3.位置锚定
^:行首锚定 用于匹配模式的最左侧
$:行尾锚定 用于匹配模式的最右侧
^$:空白行
^[[:space:]]*$ 行尾之前任意的空白字符 也是空白行
^pattern$ 行首行尾锚定相同pattern
匹配单词
\< \b :词首锚定 用于单词匹配模式的最左侧
\> \b :词尾锚定 用于单词匹配模式的最右侧
\<pattern\> p匹配完整单词
小练习:
1、显示出/etc/passwd中不以/bin/bash结尾的行
# grep -v "/bin/bash$" /etc/passwd
2、显示出/etc/passwd中的2位数和3位数
# grep -o "\b[0-9]\{2,3\}\b" /etc/passwd
3、找出/etc/init.d/functions文件中 以一个空白字符开头,且后面是非空白字符的行 并显示行号
# grep -n "^[[:space:]]\+[^[:space:]]" /etc/init.d/functions
4、显示出/etc/fstab文件中 以UUID开头的行
# grep "^UUID" /etc/fstab
5、显示出/etc/fstab文件中不以#开头的行
# grep -v "^#" /etc/fstab
4.分组和引用
\(\):将一个或者多个字符捆绑在一起,当作一个整体去处理
\(\) \#
\1:模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符
\2
\3
....
He loves his lover
He likes his lover
She likes her liker
She loves her liker
# grep "l..e.*l..e" file
He loves his lover
He likes his lover
She likes her liker
She loves her liker
# grep "\(l..e\).*\1" file
He loves his lover
She likes her liker
在这里相当于引用第一个括号里的单词,之后找的单词必须和之前括号里首先找到的单词一致