shell脚本开发
grep搜索工具
参数:
- -A<显示行数>:-A NUM, --after-context = NUM,除了显示符合范本样式的那一行之
- 外,并显示该行之后的内容。
- -B<显示行数>:--before-context = NUM,除了显示符合样式的那一行之外,并显示该
- 行之前的内容。
- -C<显示行数>:-NUM, --context = NUM,除了显示符合样式的那一行之外,并显示该
- 行之前后的内容。
- -c:统计匹配的行数
- -e :实现多个选项间的逻辑 or 关系
- -E:扩展的正则表达式,grep -E 等同于 egrep
- -f FILE:从 FILE 获取 PATTERN 匹配
- -F :相当于 fgrep
- -i --ignore-case #忽略字符大小写的差别。
- -n:显示匹配的行号
- -o:仅显示匹配到的字符串
- -q: 静默模式,不输出任何信息
- -s:不显示错误信息。
- -v:显示不被 pattern 匹配到的行,相当于[^] 反向匹配
- -w :匹配 整个单词
sed
sed [ 参数 ] '[ 地址定界 ] command' file
- 【command】常用的有如下几种:
- d:表示删除行。
- p:打印该行。
- a:在当前行之后插入新行新内容,每行末尾需要使用‘\’续行。
- i:在当前行之前插入新行新内容,每行末尾需要使用‘\’续行。
- c:c 符号后的新行新内容,替换当前行中的文本,每行末尾需要使用‘\’续行,整行
- 替换。
- r:读取指定文件的内容。
- w:写入指定文件。
- s:替换指定字符
参数
-n:静默模式。不输出模式空间内容到屏幕。
- d:表示删除行。
- p:打印该行。
- a:在当前行之后插入新行新内容,每行末尾需要使用‘\’续行;
- i:在当前行之前插入新行新内容,每行末尾需要使用‘\’续行;
- c:c 符号后的新行新内容,替换当前行中的文本,每行末尾需要使用‘\’续行,整行
- 替换
- r:读取指定文件的内容。
- w:写入指定文件。
- s :替换指定字符。
- -i:直接将处理结果写到文件中。
实训一:安装nginx脚本
#!/bin/bash
# 查询是否安装了 ssh 服务,结果重定向到临时文件 temp_text 中
dpkg -l | grep nginx > temp_text
if [ $? -ne 0 ]
then
# 安装 ssh 服务
sudo apt-get install nginx -y
# 修改配置,允许 root 远程登录
fi
# 查询是否开启了 ssh 服务,结果重定向到临时文件 temp_text 中
ps -e | grep nginx > temp_text
if [ $? -ne 0 ]
then
sudo systemctl start nginx
fi
awk 基本语法
awk '{pattern + action}' {filenames}
- $0 变量:指的是整条记录
- NF:以空格或 tab 分隔
- FS:默认为空格或 tab,如 tail -n 5 /etc/passwd |awk -F : '{print $1,$5}' ,将以冒号为分隔符,打印出 /etc/passwd 文件后 5 行的第一、第五列的内容
- $1 表示第一个域,$n 表示第 n 个域
统计test中a出现的次数: