笔记--(Shell脚本01)、正则表达式与文本处理器
bash
bash是一个命令处理器,运行在文本窗口中,并能执行用户直接输入的命令。
bash还能从文件中读取Linux命令,这种文件就称之为脚本。
bash支持通配符、管道符、命令替换、条件判断等逻辑控制语句。
bash特性
命令行展开
[root@localhost ~] echo {0..10}
0 1 2 3 4 5 6 7 8 9 10
#二的倍数
[root@localhost ~] echo {0..10..2}
0 2 4 6 8 10
命令别名
#给systemctl设置别名为abc 并关闭防火墙
alias
[root@localhost ~] alias abc=systemctl
[root@localhost ~] abc stop firewalld
#取消别名
unalias
[root@localhost ~] unalias abc
[root@localhost ~] abc stop firewalld
-bash: abc: 未找到命令
正则表达式概述
正则表达式定义又称为正规表达式,常规表达式
使用字符串来描述、匹配一系列符合某个规则的字符串
正则表达式组成:
普通字符:大小写字母、数字、标点符号及一些其他符号
元字符:在正规表示中具有特殊意义的专用字符
表达式层次
基本正则表达式
扩展正则表达式
grep命令格式
参数选项 | 解释说明 |
---|---|
-v | 排除匹配结果 |
-n | 显示匹配行与行号 |
-i | 不区分大小写 |
-c | 只统计匹配的行数 |
-E | 使用egrep命令 |
–color=auto | 为grep过滤结果添加颜色 |
-w | 只匹配过滤的单词 |
-o | 只输出匹配内容 |
sed命令格式
#语法
sed [选项] [sed内置命令字符] [输入文件]
sed选项
参数选项 | 解释 |
---|---|
-n | 取消默认sed的输出,常与sed内置命令p一起使用 |
-i | 直接将修改结果写入文件,不用-i sed修改的是内存数据 |
-e | 多次编辑,不需要管道符号了 |
-r | 支持正则扩展 |
sed常用的内置命令
sed的内置命令字符 | 解释 |
---|---|
a | append,对文本追加,在指定行后面添加一行/多行文本 |
d | Delete,删除匹配行 |
i | insert,表示插入文本,在指定行前添加一行/多行文本 |
p | Print,打印匹配行内容,通常p与-n一起使用 |
s/正则/替换内容/g | 匹配正则内容,然后替换内容 |
sed匹配范围
范围 | 解释 |
---|---|
空地址 | 全文处理 |
单地址 | 指定文件某一行 |
/pattern/ | 被模式匹配到的每一行 |
范围区间 | 10,20十到二十行,10,+5第10行向下5行,/pattern1/,/pattern2/ |
步长 | 12,表示1、3、5、7、9行,22两个步长,表示2、4、6、8、10、偶数行 |
awk命令
功能强大的编辑工具
有强大的文本格式化的能力
无交互的情况下实现复杂的文本操作
awk更是一门编程语言,支持条件判断、数组、循环等功能
awk语法
awk [可选参数] [模式] {动作} 文件/数据
awk内置变量
FS:指定每行文本的字段分隔符,缺省为空格或制表位
NF:当前处理的行的字段个数$NF:表示最后一列 $(NF-1):表示倒数第二列
NR:当前处理的行的行号
$0:当前处理的行的整行内容
$n:当前处理行的第n个字段(第n列)