.: 匹配任意单个字符
[]:匹配指定范围内的任意单个字符
[^]:跟[]相反
次数匹配(贪恋模式)
*:匹配其前的字符0,1或多次。
\?:配其前的字符0或1次
\{m,n\}:
至少m次\{m,\}
至多n次\{0,n\}
m次\{m\}
锚定符:
r..t:匹配root,chroot,rooter,this is root
单词锚定:\b
\<锚定词首:\<r..t,root,
\>锚定词尾: root\>
行首锚定:
^:^root
$:root$
可有可无的标点符号:root[[:punct:]]\{0,1\}$
.*:任意长度的任意字符。
分组字符:
\(\) ,x\(ab\)*y,匹配是xaby
前向引用:\1,就是\后面的第一个括号,\2,就是\后面的第二个括号。
grep:选项:
-v:显示不被模式匹配的行;
-i:不区分字符大小写
-o:只显示匹配的串
-A#:匹配行后面的#行
—B#:匹配行前的#行
-C#:匹配行前后的#行
-E:
^$:表示空白行
/dev/null空白
特殊字符,元字符,不表示字符的表面意义,而是能匹配符号指证的字符串
*:任意长度的任意字符:例如:a*b ,ab,
?:任意单个字符:a?b
[]:匹配指定范围内的任意单个字符:
[[:space:]]=一个空白
[[:alpha:]]=[a-zA-Z]
[[:digit:]]=[0-9]
[[:lower:]]=[a-z]
[[:upper:]]=[A-Z]
[[::]]=[]
[^]:指定范围之外的任意单个字符;
[^a-z]=[^[:lower:]]
练习:
1、显示/proc/meminfo文件中以不区分大小的s开头的行;
cat /proc/meminfo | grep -i '^s'
2、显示/etc/passwd中以nologin结尾的行;
grep 'nologin$' /etc/passwd
3、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
# grep '^#[[:space:]]\{1,\}[^[:space:]]' /etc/inittab
4、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep ':[0-9]:' /etc/inittab
5、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
grep '^[[:space:]]\{1,\}'
6、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
grep '^\([0-9]\).*\1' /etc/inittab
输入输出重定向
管道
程序的默认输入设备,叫标准输入,stdin,键盘
用0 表示
程序的默认输出设备,叫标准输入,stdout,minitor 用 1 表示
程序的默认错误信息输出设备,叫标准错误输出,stderr,minitor, 用 2表示
输出重定向:
COMMAND > FILE,是覆盖输出的; set -C是阻止覆盖,set +C是开起覆盖 >|是强制的覆盖
COMMAND >>FILE ,追加输出
/dev/null,数据黑洞
/dev/zero,泡泡机
/dev/random /dev/urandom
随机数
输入重定向:
COMMAND <FILE
COMMAND << "EOF": Here document
错误输出:
COMMAND 2> FILE 2>> FILE追加错误
正确或者错误统统重定向:
COMMAND >FILE 2> &1; COMMAND &> FILE 这都是到一个文件中。
转载于:https://blog.51cto.com/6120261/1033983