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

前端之家收集整理的这篇文章主要介绍了grep正则表达式 & egrep扩展正则表达式 & fgrep & I/O 重定向前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

wKioL1M3SteRKEGmAACWmgHT_Hc773.jpg

如右图: 大写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 表示将标准输出错误输出同时输出到指定文件

以上部分内容出自网络,经本人理解重新编写。有不妥之处还请大家指教,谢谢!

原文链接:https://www.f2er.com/regex/361899.html

猜你在找的正则表达式相关文章