@H_404_2@grep(全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它只能使用基本的正则表达式来搜索文本,并把匹配的行打印出来。它的主要功能是进行字符串数据的比较,然后符合用户需求的字符串打印出来,请注意grep在数据中查找一个字符串时,是以“整行”为单位进行数据筛选的。
@H_404_2@egrep 命令等同于grep -E,利用此命令可以使用扩展的正则表达式对文本进行搜索,并把符合用户需求的字符串打印出来。
@H_404_2@fgrep 命令等同于grep -F,它利用固定的字符串来对文本进行搜索,但不支持正则表达式的引用,所以此命令搜索字符串的速度很快。
注:
@H_404_2@@H_404_2@ grep只支持基本正则表达式
@H_404_2@ fgrep不支持正则表达式,搜索字符串的速度快
一、grep命令格式及常用选项
命令格式:grep [options] "pattern" Files
[options]参数
--color 匹配到的字符用高亮颜色显示出来
-v 反向选取匹配到的内容
-i 不区分字符大小写
-E 使用扩展的正则表达式,等同于"egrep"命令
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
如上:@H_404_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表示将内容输出至指定文件
@H_404_2@ >| 表示强制覆盖,除非使用者十分明确自己所做事情,否则慎用
>> 表示追加输出重定向,些输出会在文件原有内容中继续添加,不覆盖
@H_404_2@/null表示输出为空,即输出文件不存在。不同于空白文件
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 表示将标准输出、错误输出同时输出到指定文件
以上部分内容出自网络,经本人理解重新编写。有不妥之处还请大家指教,谢谢!