文本处理三剑客
-
grep: 文本过滤工具
-
sed: stream editor,流编辑器,文本编辑器
-
awk: 文本报告生成器(格式化文本)
grep正则表达式
grep使用:
grep [options] PATTERN [FILE…]
grep [OPTIONS] [-e PATTERN] [-f FILE] [FILE…]
选项:
–color=auto:对匹配上的文本着色后高亮显示
-i: ignorecase, 忽略字符大小写
-o: 仅显示匹配的字符串本身
-v, --invert-match: 显示不能被模式匹配到的行
-E: 支持使用扩展的正则表达式元字符
-q, --quiet,–silent: 静默模式,不输出任何内容
-A number: after,显示匹配上的后number行
-B number: before,显示匹配上的前number行
-C number: context,显示匹配上的前后number行
基本正则表达式元字符:
1、字符匹配
.
: 匹配任意单个字符
[]
: 匹配指定范围内的任意单个字符
[^]
: 匹配指定范围外的任意单个字符
特殊表达:
[:digit:]
、[:upper:]
、[:lower:]
、[:alpha:]
、[:alnum:]
、[:punct:]
、[:space:]
2、匹配次数
*
: 任意次,可以是0,1或者多次
\?
: 匹配0或者1次
\+
: 匹配1次或者多次
\{m\}
: 精确匹配m次
\{m,n\}
: 至少匹配m次,最多匹配n次
\{m,\}
: 至少匹配m次
\{0,n\}
: 最多匹配n次
3、位置锚定
^
: 锚定行首
$
: 锚定行末
\<
或者\b
: 锚定单词首
\>
或者\b
: 锚定单词末
4、分组及引用
(): 小括号中的多个字符被绑定在一起,作为整体被处理
\1
或者\2
或者\3
: 模式从左侧起,第一(二、三)个括号以及与之匹配的右括号之间的模式所匹配的字符串
egrep扩展的正则表达式
grep -E
等效于egrep
,egrep
的选项与grep
的常用选项基本一直,支持-i -o -v -q -A -B -C
,-G
支持基本的正则表达式。
扩展的正则表达式元字符
1、字符匹配:
.
: 匹配任意单个字符
[]
: 匹配指定范围内的任意单个字符
[^]
: 匹配指定范围外的任意单个字符
2、匹配次数
*
: 任意次,可以是0,1或者多次
?
: 匹配0或者1次
+
: 匹配1次或者多次
{m}
: 精确匹配m次
{m,n}
: 至少匹配m次,最多匹配n次
{m,}
: 至少匹配m次
{0,n}
: 最多匹配n次
3、位置锚定
^
: 锚定行首
$
: 锚定行末
\<
或者\b
: 锚定单词首
\>
或者\b
: 锚定单词末
4、分组及引用
()
: 小括号中的多个字符被绑定在一起,作为整体被处理
\1
或者\2
或者\3
: 模式从左侧起,第一(二、三)个括号以及与之匹配的右括号之间的模式所匹配的字符串
5、或者关系
a|b:匹配a或者b,例如:C|cat
匹配C
或者cat
,而(c|C)at
匹配cat
或者Cat
fgrep不支持正则表达式
当无需使用正则时使用fgrep效率更高
文本查看及处理工具
1、wc
-l 统计行数
-w 统计单词数
-c 统计字节数
2、cut
-d char: 以指定的字符为分隔符
-f FIELDS: 前行出字段
#: 指定单个字段
#-#: 连续的几个字段
#,#: 离散的多个字段
例如: cut -d: -f1,3-5,7 /etc/passwd
表示查看按:分隔的第1个,3-5个和第7个字段内容。
3、sort
sort [OPTION]… [FILE]…
-t CHAR: 指定分隔符
-k #: 指定排序的字段
-n: 基于数字大小排序,默认为字符字典排序
-r: 逆序排序
-f: 不区分大小写
-u: 去重
例如:sort -t: -k4 -u -f -r -n /etc/passwd
4、uniq
-c: 显示美航的重复次数
-u: 仅显示未重复的行
-d: 仅显示重复的行
例如:cut -d: -f7 /etc/passwd | sort | uniq -c
cut -d: -f7 /etc/passwd | sort | uniq -u
cut -d: -f7 /etc/passwd | sort | uniq -d
5、diff
diff oldFile newFile
-u: 使用unfied机制,显示修改行的上下文,默认为上下3行,可以使用-u#
指定行数
6、patch 向文件打补丁
patch [OPTIONS] -l patch_file oldfile
patch oldfile < patch_file