一.输出重定向
- 标准输出:是将信息输出在终端
- 标准错误输出:在执行命令的过程中所产生错误信息也是输出在终端
- 标准输入:从键盘输入
1.1标准输出重定向
- 作用:将本来要显示在终端上的信息重定向到一个文件中
实现方法:
- > 将文件中原有的内容全部删除,然后进行写入
- >> 在文件原有的内容后,追加新的内容
1.2标准输出错误重定向
- 2>
- 2>>
二.通配符
- .* 任意长度的任意字符
- ?一个长度或者字符
- && 只有前面的命令执行成功,后面的命令才会执行
- || 只有前面命令执行失败,才会执行后面的命令
- # 注释行(描述信息,不执行)
- | 传递命令的执行结果
- ~ 家目录
- - 上一次所在的目录
- $ 变量前加的符号
- / 路径分隔符(或者根)
-
“> >>” 重定向
-
<< 打印菜单
- 引号
' ' : 弱引用,引用的内容原样输出" " : 强引用,引用中变量会变成变量的值`` : 命令替换
-
. 点
.表示当前目录.. 上一级目录
- {}
mkdir {1..10}.dir
三.正则表达式
- 构成:一堆特殊符号和字母构成----元字符
- 作用:通过对文本中内容进行过滤,然后对文件中的内容进行过滤
正则表达式的种类:
- 基础正则表达式
- 扩展正则表达式
通常结合三个命令使用:
- grep
- sed
- awk
①:grep命令
- 作用:对文件中的内容进行过滤
- 格式:grep 选项 匹配内容 文件
选项:
- -v:取反
- -o:仅仅显出所匹配的内容
- -E:使用扩展
- -i:忽略大小写
通配符和正则的区别:
- 通配符是对文件名进行匹配,正则表达式是对文件中的内容进行匹配
正则中元字符:
3.1.匹配单个字符
- .表示任意一个字符(可以空格逗号字母数字...)
例子:匹配a前面有一个字符的行
grep".a"11.txt
3.2.[ ] 表达范围内的其中一个
- [123456] 表示匹配1或2或者3...6
- [0-9]匹配所有的数字
- [A-Z]匹配所有大写的字母
- [a-z]匹配所有小写的字母
- [a-Z]匹配所有的字母
例子:匹配文件中包含数字的行
grep [0-9] file
例子:包含字母
a
的行
grep "a" file
3.3.字符集表达方式
- [[:space:]]:表示一个空格
- [[:digit:]]:表示任意一个数字
- [[:lower:]]:表示任意一个小写字母
- [[:upper:]]:表示任意一个大写字母
- [[:alpha:]]:表示任意一个字母
- [[:alnum:]]:表示任意一个字母+数字
- [[:punct:]]:表示任意一个标点符号
例子:匹配一个包含小写字母的行
grep [a-z] file
grep [[:lower:]] file
3.4^[ ]
例子:匹配以
#
开头的行
grep ^[#] file
[^a]
匹配除了
a
以外的任意字符
grep [^a] file
例子:过滤没有包含
qaz
的行
grep [^qaz] file
例子:过滤出
#
开头后面有一个空格的行
grep "^#[[:space:]]" file
3.5.显示匹配到的行的前的若干行
- -An:显示匹配到的内容的后n行
- -Bn:显示匹配到的内容的前n行
- -Cn:显示匹配到的内容的前后各n行
例子:匹配包含
root
的行的前
3
行
grep -B3 "root" file
3.6.次数匹配
- "*"前面字符出现了任意次数
- ".*" 表示任意长度的任意字符
- "?"表示其前面字符出现最多一次
- "a\[m,n\]b" 表示b前面的a至少出现m次,最多出现n次
- -E a[m,n]b 加一个选项-E 则不需要加\,用法同上
例子:b前面的a只出现一次
grep -E "a{1,1}b" file
例子:b前面的a至少出现1次,最多次数不限
grep -E "a{1,}b" file
3.7.位置锚定
- ^ 表示以n为开头的行
- $ 表示以n为结尾的行
例子:过滤出以y为结尾的行
grep "y$" file
3.8.分组
- \( \) 将一个内容当作一个整体看待
- \1 调用第一个整体
- \2 调用第二个整体
例子:在
11.txt
中,过滤出出现过俩个相同数字的行
grep "\([[:digit:]]\).*\1" file
3.9.扩展正则表达式
格式:
- grep -E 匹配内容 file
- egrep 匹配内容 file