一.grep [-acniv] '字符串' filename 功能:搜索显示
-a 文本方式搜索
-c 找到的次数
-n 显示行号 例: grep -n ' the' filename
-i 忽略大小写 例: grep -in 'the' filename
-v 反选 例: grep -vn 'the' filename
二. grep和正则表达式配合使用
一).[]集合, [^]反选
例:grep -n 't[ae]st' filename 搜索tast 和 test
例:grep -n 'oo' filename 搜索.*oo.*
例:grep -n '[^g]oo' filename 搜索xoo.*且x不是字母g
例:grep -n '[^a-z]oo' filename 搜索xoo.*且x不是小写字母
例:grep -n '[0-9]' filename 搜索有数字的行
补充:[^]反选 和 -v 反选的区别
1. [^]是正则表达式的符号,-v是grep命令和egrep命令的属性
2. [^abc] 字符a和字符b和字符反选,grep -v ‘abc’ 字符串'abc'反选
二). 行首^行尾$
例:grep -n '^the' filename 搜索行首是the的行
例:grep -n '^[a-z]' filename 搜索小写字母开头的行
例:grep -n '^[^a-zA-Z]' filename 搜索不是英文字母开头的行 grep -nv '^[a-zA-Z]' filename
例:grep -n '\.$' filename 搜索小数点结尾的行
例:grep -n '^$' filename 搜索空行
例:grep -n '#' filename 搜索有注释符号的行
例:grep -n '^#' filename 搜索 注释行
例:grep -nv '^#' filename | grep -nv '^$' 搜索空行和注释行以外的所有行 开通两个管道
或者 egrep -nv '^$'|'^#' 开通一个管道
三).绝对有一个字符. *表示前面的一个字符个数>=0 +表示前面的一个字符个数>=1 ?表示前面的一个字符个数<=1
例:grep -n 'g..d' filename 搜索g和d之间有两个字符的字符串 good, glad, g sd g d
例:grep -n 'ooo*' filename 搜索oo ooo oooo ooooo ....
例:grep -n 'goo*d' filename 搜索god good gooog ... egrep -n 'go+d' filename
例:grep -n 'g*g' filename 搜索g gg ggg gggg ... egrep -n 'g+'
例:grep -n 'g.*g' filename 搜索g开头g结尾中间不限字符种类和个数
例:grep -n '[0-9][0-9]*' filename 搜索任意数字的行 egrep -n '[0-9]+' filename
四).{n} {n,} {n,m} '{'和'}'需要转义字符\
例:grep -n o'\{2\}' filename 搜索oo
例:grep -n 'g\{2,5\}g' filename 搜索g开头g结尾,中间有2到5个o
例:grep -n 'g\[2,\]g' filename 搜索g开头g结尾,中间o的个数>=2
三. grep及正则表达式与其他命令配合使用
ls -l * 列出所有文件 *是通配符
ls -l a* 列出所有文件名以a开头的文件 *是通配符
ls | grep -n '^a.*' 列出所有文件名以a开头的文件, ls不支持正则表达式,需要搭配grep才能使用正则表达式 *是正则表达式的字符
四.sed [-nefr] [acdips] 读取标准输入,操作之后给标准输出
a 在后面添加
c 替换
d 删除
i 在前面插入
p
s
五.awk