在说正则表达式之前再加几个小知识
1、输出重定向:
标准输出:是将信息输出在终端上
标准错误输出:在执行命令的过程中所产生的错误信息也是输出在终端上的
标准输出:是从键盘输入的
1.1、标准输出重定向
作用:将本来要显示在终端上的信息重定向到一个文件中
实现方法:
用:
> 将文件中原有的内容全部删除,然后进行写入
>> 在文件原有的内容之后,追加新的内容
例如:在终端上输出123并追加到a.txt里
echo "123" >> a.txt
1.2、标准错误输出
实现方法:
2> 将文件中原有的内容全部删除,然后进行写入
2>> 将文件中原有的内容全部删除,然后进行写入
例如:将ls /sdjfl 这个命令追加到黑洞文件(/dev/null)
ls /sdifl 2>> /dev/null
2、通配符
2.1、*:表示任意长度的任意字符
2.2、?:表示一个长度的任意字符
2.3、;:链接多个命令
2.4、#:注释行(描述信息,但是不执行)
2.5、|:传递命令的执行结果
2.6、~:返回当前用户的家目录
2.7、-:返回上次所在目录
2.8、$:变量前要加的符号
2.9、/:路径分隔符(或者是根)
2.10、“> >>”:标准重定向
2.11、” <<“:标准错误重定向
用来打印菜单
cat <<EOF
>1
>2
>EOF #结尾退出用这个
2.12、引号
' ' : 弱引用,引用的内容原样输出" " : 强引用,引用中变量会变成变量的值`` : 命令替换
2.13、点(.)
2.14、花括号扩展:{}
正则表达式简介:
构成:是由一堆的特殊符号和字母构成的(元字符)
作用:通过对文本中的内容进行过滤,然后对文件中的内容进行过滤
正则表达式的种类:
基础正则表达式、扩展正则表达式
通常结合三个命令来使用(又称三剑客)
grep、sed、awk
今天我们来学习grep命令
grep命令
作用:对文件中的内容进行过滤
格式:grep 选项 匹配内容 文件名
选项:
-v:取反
-o:仅仅显示处所匹配的内容
-E:使用扩展
-i:忽略大小写
通配符和正则的区别:!!!!
通配符是对文件名进行匹配,但是正则表达式是对文件中的内容进行匹配的
正则中的元字符
1、匹配单个字符
点(.)代表一个任意字符
2、[ ]:表示范围中的其中任意一个
[123456]:表示匹配中的其中一个
[0-9]:表示匹配所有的数字
[A-Z]:表示匹配所有大写的字母
[a-z]:匹配所有小写的字母
[a-Z]:匹配所有的字母
3、用字符集的方式表达
[[:space:]]:表示一个空格
[[:digit:]]:表示任意一个数字
[[:lower:]]:表示任意一个小写字母
[[:upper:]]:表示任意一个大写字母
[[:alpha:]]:表示任意一个字母
[[:alnum:]]:表示任意一个字母+数字
[[:punct:]]:表示任意一个标点符号
4、^[ ]:表示以中括号开头的行
[^ ]:表示除了中括号里面的行
grep [^qaz] file
5、显示匹配到的行前后的若干行
-An:显示匹配到的内容的后n行
-Bn:显示匹配到的内容的前n行
-Cn:显示匹配到的内容的前后n行
例子:匹配包含root的行的前3行
grep -B3 "root" file
6、次数匹配
"*":代表前面的字符出现了任意次数(0-n次)".*":代表任意长度的任意字符"?":代表其前面的字符出现最多一次(注意:要结合-E使用)例子:grep -E "a{1,}b" 11.txt b前面的a至少1次最多不限\{m,n\}:表示前面字符出现最少m次,最多出现n次(当用-E的时候可以不加\)例:-E a{m,n}b
7、位置锚定
^n:表示以n为开头的行n$:表示以n为结尾的行\<n:表示单词首部为n开头的
n\>:表示单词尾部以n为结尾的行
^$:表示显示空白行
8、分组
\( \) :将括号里面的内容看作一个整体
\1:表示引用第一个分组
\2:表示引用第二个分组例子:在11.txt中,过滤出出现过俩个相同数字的行
grep "\([[:digit:]]\).*\1" 11.txt
扩展正则表达式:
格式是:
格式1:grep -E 匹配内容 文件格式2:egrep 匹配内容 文件
+等同于{1, }:其前面的字符至少出现1次
或(|)
egrep "^(a|A)" 11.txtegrep "^[aA]" 11.txt