您的位置:首页 > 其它

grep正则表达式 & egrep扩展正则表达式 & fgrep & I/O 重定向

2014-03-30 14:51 316 查看
grep(全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来。它的主要功能是进行字符串数据的比较,然后符合用户需求的字符串打印出来,请注意grep在数据中查找一个字符串时,是以“整行”为单位进行数据筛选的。egrep 命令等同于grep -E,利用此命令可以使用扩展的正则表达式对文本进行搜索,并把符合用户需求的字符串打印出来。fgrep 命令等同于grep -F,它利用固定的字符串来对文本进行搜索,但不支持正则表达式的引用,所以此命令搜索字符串的速度很快。注: grep只支持基本正则表达式 egrep只支持扩展正则表达式 fgrep不支持正则表达式,搜索字符串的速度快一、grep命令格式及常用选项 命令格式:grep [options] "pattern" Files [options]参数 --color 匹配到的字符用高亮颜色显示出来 -v 反向选取匹配到的内容 -o 只显示被模式匹配到的内容 -r 搜索多个文件时,以递归搜索 -i 不区分字符大小写 -A n 显示匹配到的行时,且显示其后面的n行 -B n 显示匹配到的行时,且显示其前面的n行 -C n 显示匹配到的行时,且显示其前面和后面的n行 -E 使用扩展的正则表达式,等同于"egrep"命令 pattern:匹配查找文件内容的模式 grep后面加上 --color=auto 表示高亮显示符合条件字符,即将符合条件字符加上颜色显示。 正则表达式(分为基本正则表达式与扩展正则表达式) 基本正则表达式(工作在贪婪模式,尽可能长的匹配符合模式的内容) 元字符: .: 匹配任意单个字符; 如: grep "A.J" ^: 锚定行首符合条件的内容; 如:grep "^root" $: 锚定行尾符合条件的内容; 如:grep "root$" *: 匹配紧挨在其前面的字符任意次; 如:grep "a*b" .*: 匹配任意长度字符任意次; 如:grep "r.*t" []: 匹配指定范围内的任意单个字符; [0-9]:所有的数字 [a-z]:所有的小写字母 [A-Z]:所有的大写字母 [a-zA-Z]:所有的字母 [0-9a-zA-Z]:所有的数字和字母 如:grep "[0-9]" 亦可用如下单词替代相对应选项 [:digit:] 数字 等同于”0-9” [:lower:] 小写字母 等同于”a-z” [:upper:] 大写字母 等同于”A-Z” [:punct:] 标点符号 [:space:] 空白字符 [:alpha:] 所有字母 等同于”a-zA-Z” [:alnum:] 所有数字或字母 等同于”a-zA-Z0-9” [^]: 匹配指定范围外的任意单个字符; 如:grep "[^0-9]" \?: 匹配紧挨在其前面的字符0次或1次; 如:grep "a\?b" \{0,n\}:匹配其前面的字符0次到n次; 如:grep "[0-9]\{1,2\}" \{m,\}: 匹配其前面的字符至少m次; 如:grep "[0-9]\{1,\}" \{m,n\}:匹配其前面的字符至少m次,最多n次; 如:grep "[0-9]\{1,2\}" \<:锚定词首;用法格式“\<pattern” \>:锚定词尾;用法格式“pattern\>锚定词首词尾必须一起使用 如:grep "\<[0-9]\{1,2\}\>" \(\):分组匹配; 如:grep "\(.n\).*\1"扩展正则表达式(egrep、grep -E) 注:在基本正则表达式基础上支持这些元字符 元字符: ?: 匹配紧挨在其前面的字符0次或1次;用法格式”a?b” {m,n}:匹配其前面的字符至少m次,最多n次;用法格式“a{1,3}b” {m}: 精确匹配m次;用法格式“a{2}b” (): 分组匹配;用法格式“(a.b).*\1” |: 或者;用法格式”a|b” 如:grep -E "Failed password|FAILED LOGIN" /var/log/secure +: 匹配其前面的字符至少1次;用法格式“a+b” I/O 重定向、管道 程序分为输入、输出即I/O,将默认数据流改为其它设备,就称作IO重定向. 标准输入fd: 0 标准输出fd: 1 错误输出fd: 2 如上:标准输入用0表示、标准输出用1表示、错误输出用2表示。 < 表示输入重定向 COMMAND < /from/somewhere 如: cat < /etc/passwd 表示将指定文件内容输入至cat命令显示于屏幕上
<< 表示此处创建文档,通常用于脚本中生成文档,向用户输出大段信息 cat > /path/to/somefile << EOF Hello everyone I am is Newusers
This is my writes Thankyou watch EOF


如右图: 大写EOF表示文件结束符,两个EOF中间内容为文件显示内容,cat表示将内容输出至指定文件
> 表示覆盖输出重定向,此输出会覆盖文件原有内容
>| 表示强制覆盖,除非使用者十分明确自己所做事情,否则慎用 >> 表示追加输出重定向,些输出会在文件原有内容中继续添加,不覆盖/null表示输出为空,即输出文件不存在。不同于空白文件 set -C 禁止对已经存在的文件使用覆盖重定向 set +C 关闭上述功能同时重定标准输出和错误输出:COMMAND > /path/to/stdout 2> /path/to/error如:cat /etc/passwd > /tmp/Joan.txt 2> /tmp/ooan.txt标准输出和错误输出定向至一个文件:&> &>> 与&>同意,无实际意义COMMAND &> /path/to/somewhere 表示将标准输出到指定文件COMMAND > /path/to/somewhere 2>&1 表示将标准输出、错误输出同时输出到指定文件 以上部分内容出自网络,经本人理解重新编写。有不妥之处还请大家指教,谢谢!本文出自 “Why no !” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: