九、1 Grep

正则介绍html

正则就是一串有规律的字符串shell

掌握好正则对编写shell脚本有很大帮助编程

各类编程语言中都有正则,原理是同样的编程语言

经常使用的工具备grep/egrep、sed、awk工具

正则:http://www.runoob.com/regexp/regexp-syntax.html3d

 

. 表示任意一个任意字符
 * 表示零个或多个*前面的字符(* 号表明字符能够不出现,也能够出现一次或者屡次(0次、或1次、或屡次))
.* 表示通配,全部的都匹配
{} 表示范围,{}花括号前面字符的一个范围
+表示一个或多个+号前面的字符(+号表明前面的字符必须至少出现一次(1次或屡次))
?表示0个或一个问号前面的字符(? 问号表明前面的字符最多只能够出现一次(0次、或1次))
|表示或者
\放在特殊符号前,则该特殊符号的做用消失(脱意符)
过滤指定的关键词,格式为:grep [-cinvABC] '关键词' filenameregexp

(以上命令中
'string' 单引号 (single quote)
被单引号用括住的内容,将被视为单一字符串。在引号内的表明变数的$符号,没有做用,也就是说,他被视为通常符号处理,防止任何变量替换。
heyyou=homeecho '$heyyou' # We get $heyyou
"string" 双引号 (double quote)
被双引号用括住的内容,将被视为单一字串。它防止通配符扩展,但容许变量扩展。这点与单引数的处理方式不一样。
heyyou=homeecho "$heyyou" # We get home
`command` 倒引号 (backticks)
在前面的单双引号,括住的是字串,但若是该字串是一列命令列,会怎样?答案是不会执行。要处理这种状况,咱们得用倒单引号来作。
fdv=`date +%F`echo "Today $fdv"
在倒引号内的 date +%F 会被视为指令,执行的结果会带入 fdv 变数中。)htm

-c:表示打印符合要求的行数
-n:表示输出符合要求的行及行号
-i:不区分大小写
-v:取反,打印不符合要求的行
-r:遍历全部子目录
-A :后面跟一个数字,过滤出符合要求的行以及下面n行
-B:后面跟一个数字,过滤出符合要求的行以及上面n行
-C:后面跟一个数字,过滤出符合要求的行以及上下各n行blog

-c:表示打印符合要求的行数ci

-n:表示输出符合要求的行及行号

-i:不区分大小写

-v:取反,打印不符合要求的行

-r:遍历全部子目录

匹配全部带root的文件

-A :后面跟一个数字,过滤出符合要求的行以及下面n行

-B:后面跟一个数字,过滤出符合要求的行以及上面n行

-C:后面跟一个数字,过滤出符合要求的行以及上下各n行

grep '[0-9]':表示过滤出包含数字的全部行

grep -nv '[0-9]':表示过滤出不包含数字的全部行

grep -v '^#':表示过滤掉全部已#开头的行,^表示以什么开头

grep  '[^0-9]':表示过滤掉全部数字,^在中括号里表示非的意思

grep  -n '^[^0-9]':表示过滤出以非数字开头的行和行号

grep  -nv '^[^0-9]':表示过滤出以数字开头的行和行号

例如 [^0-9]  那就是非数字(包括字母+特殊符号)
例如[^a-zA-Z] 那就是非字母(包括数字+特殊符号)
例如[^0-9a-zA-Z]那就是非数字字幕(特殊符号)

grep 'r.o':表示过滤出任意的一个字符, . 表示任意一个字符

grep 'o*o':表示过滤出零个到多个o(*前面的字符)

grep '.*':表示过滤出任意字符

grep 'o\ {2\ }' :表示过滤出指定字符出现的次数,{}能够是一个范围,如'o\ {0,3\ }'

还有两种表示方法:egrep 'o{2 }'   grep -E 'o {2 }'

grep 'o\+o':表示过滤出1个到多个o(+前面的字符)

egrep 'o?t':表示过滤出零个到1个o(?前面的字符)

grep -E 'root|nologin' ,|表示或者的意思

把一个目录下,过滤全部*.txt文档中含有aa222的行;   grep -r --include="*.txt" 'aa222'  /

grep '^s.*n$' passwd,匹配以s在开头n在结尾的行

相关文章
相关标签/搜索