grep和sed的一些简单的用法
一.
正则表达式的元字符
说明:元字符是这样一类字符,他们所表达的是不同字符本身的含义。
1. ^ 行首定位符 e.g:/^love/ 匹配所有以love开头的行
2. $ 行尾定位符 e.g:/love$/ 匹配所有以love结尾的行
3. . 匹配单个字符 e.g: /l..e/ 匹配包含一个l ,后面跟两个任意字符,再跟一个e的行
4. * 匹配*前面的字符0次或者多次 e.g: /love*/ 匹配包含lov后面跟0个e或多个e的行
5. [ ] 配一组字符中的任一个 e.g: [Ll]ove 匹配包含love或者Love的行
6. [x-y] 配指定范围的字符 e.g:[A-Z]ove 匹配后面跟着ove的一个A-Z中的任意字符
7. [^ ] 匹配不在括号中的任意字符 e.g: /[^A-Z] 匹配不是A-Z中的任意字符
8. \ 转义字符 e.g:/love\./ 匹配love后面跟着一个“.“ 的行
9. \< 词首定位符 e.g: /\<love/ 匹配以单词love开头的行
10. \> 词尾定位符 e.g:/love\>/ 匹配以单词love结尾的行
11. \(..\) 稍后将要使用的字符串的标签 e.g: /\(love\)able\1r/ 最多可以使用9个标签,最左边的为第一个标签。例子中的love被标记为第一个标签, 表示的是包含loveable后面跟着lover的行
12. .* 匹配任意的字符 e.g:/.*/ 匹配所有的行
13. X\{m\} 字符X出现m次 e.g:/a\{5\}/ 匹配连续出现5次a的行
14. X\{m,\} 字符X至少出现m次 e.g: /a\{5,\}/ 匹配至少连续出现5次a的行
15. X\{m,n\} 字符X至少出现m,至多出现n次 e.g:/a\{5,10\}/ 匹配字符a至少连续出现5次,至多出现10次的行
二。grep
的简单使用
说明:grep
的全称:Global search Regular Expression and Print out the line.
(1) grep
既支持 ‘’ (
强引用)
又支持 “ “ (
弱引用)
(2) grep
支持正则表达式
(3) grep
的选项
1. �Cc 只显示匹配到的行号,不显示匹配到的内容
2. �Ci 在比较字符的时候忽略大小写,即认为大小写是一样的
3. �Cn 在匹配到的行前面打上行号
4. �Cv 显示没匹配到的行
5. �Co 只显示匹配到的字符串,而不是显示一行
6. �Ccolor=auto/never/always 让匹配的内容显示颜色
(4) grep
支持扩展正则表达式,用 grep �CE
或者 egrep
就可以使用,egrep
支持新增的元字符
1. ? 匹配0个或者一个前导字符 e.g:’lo?ve’ 匹配l后面跟着0个或者1个o,再跟着ve的字符串,将找到 love和lve
2. + 匹配1个或者多个前导字符 e.g:’lo+ve’ 匹配l后面跟着1个或者多个o,再跟着ve的字符串。
3. a
| b 匹配a或者b e.g:love
| hate 匹配love或者hate字符串
4. () 字符组 e.g: ‘love(able
|ly) 匹配loveable 或者lovely
5. \w 所有的数字和字母 e.g: ‘^\w’ 所有以数字和字母开头的行
(5
)
在egrep
中,使用“X\{m\}, X\{m,\}, X\{m,n\}
“时,不需要加\ e.g: a{3}
匹配连续出现a
三次的行
三。
sed
的简单使用
(1
)说明:
1 . sed 是非交互式编辑器
2 . 没有破坏性,不修改原文件
3 . sed是一个行编辑器,它会逐行处理要被处理的文件的内容,然后输出到屏幕上
4 . sed 的模式空间
(2) sed
的命令
1. a\ 在当前行后添加一行或者多行
2 . d 删除行
3. i\ 在当前行前面添加一行或者多行
4 . p 打印行
5. s 用一个字符串替换另一个
6. r 在查到行的后面插入一个文件
(3
) sed
的替换标志
1. g 在行内进行全局替换
2. y 将一个字符转化为另一个字符
(4
) sed
的选项
1. �Ce 允许编辑多行
2 . �Cn 取消默认输出
3. �Ci 修改原文件
(5
) sed
的一些其他用法
1
. 可以在文件中指定的范围进行查找 e.g: sed ‘3,5s/cat/dog/’ pets 在pets文件中查找cat并将其替换为dog 当然例子中的数字也可以换成单词, e.g: sed ‘/digby/,/duncan/s/cat/dog/’ pets 在第一个出现digby和duncan中把cat 替换为dog
2. gi 连用可以在全局替换的时候忽略大小写
3. 支持& 代替参数,可以代替前面的变量
(6
)
支持正则表达式
四。sed
和grep
的简单区别
grep
搜索的是整行,sed
只是特定字符串的搜索。