-
特殊符号
’ ’ 单引号,所见即所得,里面的内容会被原封不动地输出
" " 双引号,里面的特殊符号会被解析运行
` ` 反引号, 相当于 $() 先运行()里面的命令,把结果留下来
> 重定向符号,先清空文件,然后追加文件的最后
>> 追加重定向,标准化输出,把内容追加到文件最后
2> 错误重定向, 很少单独用,先清空,只有报错的信息,命令错了,才会通过这个漏斗进入文件中
2>> 错误追加重定向 ,只追加,不会清空
~ 当前用户的家目录 root用户:/root 普通用户: /home/用户名
! vi中表示强制,find或awk中表示取反。还有就是查找并运行历史命令,如!ask, linux会找到包含awk的命令,最近的一条执行,相对于history |grep awk,区别是只找出来并没有运行
如
# 注释或表示root用户的命令提示符
$ 取出变量的内容 awk中 $取某一列的内容。或表示普通用户的命令提示符
* 任何东西
\ 转义字符
&& 前一个命令执行成功然后再执行后一个命令
|| 前一个命令执行失败了再执行后一个命令, 场景:如果文件不存在创建文件,如果目录不存在创建目录
-
通配符
用来查找文件的,以.txt结尾的文件, *.txt *.log* 所有,任意
找出文件名包含tt的文件
{} 生成序列
通过{}进程备份
-
正则表达式
常见的特殊表达符号表示一些含义
提供效率,简单
在linux中支持正则表达式:awk,grep,sed
使用时注意事项
按照行进行处理
给grep和egrep配置别名
-
正则表达式和通配符的区别
通配符—用来匹配查找文件名, 大部分命令都可以使用,*.txt, *.log,
正则-----在文件中匹配查找内容,grep,sed,awk支持 -
正则表达式分类与环境准备
基础正则
^
$
. 任何一个,任意一个字符,
* 前一个符号,连续出现
[]
[^]
basic regular expression BRE grep, sed , awk
扩展正则
extended regular expression ERE grep ,-E/egrep, sed -r, awk
| 或
{}
()
+
?
例题:
环境准备
-
. (点) 任意一个字符,每次只能找到一个符号,但是可以找很多此,不包含空行
如
由于正常表达式是一行一行处理的,
.点每次匹配了一个后就是下一行了
-o 表示grep的执行过程, 正则每次匹配到了什么
找出文件中以点结尾的句子
\n 回车换行
- * 前一个字符连续出现了0次或1次以上 >=0
为何会取出000,不是00和0
因为正则表达式在表示连续出现是出现贪婪性, 有多少匹配多少,
为何使用‘0*’ ,会把整个文件的内容显示出来
A*
表示连续出现了0次A,什么也没有 相当于‘ ‘,会把整个文件内容都显示出来,
A连续出现了1次以上AAAA - .* 所有字符,所有符号,所有
*表示前一个符号连续出现0次或1次以上,而前一个符号是.,也就是任意一个符号,
上例中,我想要找以第一个o为结尾的句子
可是匹配到了该句的最后一个o,因为正则表达式表示连续出现或所有时,表现为贪婪性,有多少匹配多少。
找出文件中以m开头的行并以m结尾的行
- []
[abc] 相当于是一个字符, 找出包含a或b或c的行,
处理过程
[a-z]
[A-Z]
[0-9]
[a-zA-Z0-9]
[m,n,o]
[^abc] 除了a或b或c,其他都要
- + 表示前一个符号连续出现1次或多次
把文件中连续出现的小写字母取出来
连着的字母,连着的数字,一般与[]配合,
- | 或者
[] 与 | 的区别
都可以表示或者,一个是基础正则,一个是扩展正则
[] 表示单个字符或者
| 单个字符的或者多个字符都可以,单词等 - ()
1 ,括号中的内容相当于是一个整体,一个符号
有括号先算括号里面的
2 ,后向引用(反向引用)
sed,把你想要的内容通过()保护起来,然后再使用他
- {}
o{n, m} 前一个字符连续出现了至少n次,最多m次
连续出现的数字
- ?表示前一个字符连续出现0次或1次
总结
正则符号 | 意义 |
---|---|
* | >=0 |
+ | >=1 |
? | 0或 1 |
{n,m} | >=n <=m |
{n} | ==n |
. | 任意一个 |
[abc] | 一个 |
[^abc] | 排除 |
| | 或 |
() | 后向引用 |
^ | |
$ | |
.* | 所有 |
^$ | 空行,什么也没有 |
命令符号
支持基础正则 | 基础+扩展 |
---|---|
grep | egrep ==grep -E |
sed | sed -r |
awk | awk |
- 查询帮助信息
man grep
info grep