五种常用文本工具和Crontab调度工具(二)
- cut: 用于从文本中提取特定的字段或列。
- grep: 用于搜索文本中的特定模式。
- awk: 用于处理和分析文本。
- sed: 用于文本替换和编辑。
- sort: 用于对文本行进行排序。
Crontab
Crontab 是用于定时任务调度的工具,可以用来定期执行脚本或命令。通过设定特定的时间表达式,来控制任务的执行频率。
这两类工具在功能和用途上有很大不同,但都在命令行环境中非常常用。
4. grep
命令
grep
是用于搜索文本的命令行工具,可以在文件中查找匹配的字符串。
语法
grep [选项] PATTERN [文件...]
常用选项
-i
:忽略大小写。-r
或-R
:递归搜索目录。-v
:反转匹配,显示不匹配的行。-n
:显示匹配行的行号。-c
:统计匹配的行数。-l
:仅显示包含匹配的文件名。-e
:指定多个模式。
常用示例
1. 在文件中查找匹配的行
grep "pattern" filename.txt
2. 忽略大小写查找
grep -i "pattern" filename.txt
3. 在多个文件中查找
grep "pattern" file1.txt file2.txt
4. 递归查找目录中的文件
grep -r "pattern" /path/to/directory
5. 显示匹配行的行号
grep -n "pattern" filename.txt
6. 统计匹配的行数
grep -c "pattern" filename.txt
7. 反转匹配,显示未匹配的行
grep -v "pattern" filename.txt
8. 查找多个模式
grep -e "pattern1" -e "pattern2" filename.txt
5. sort
命令
常用选项:
-t
:指定分隔符-n
:按数值排序-r
:以相反的顺序(降序)排序-k
:指定以第几列进行排序
案例
文件 data.txt
,内容如下:
apple:5:2.1
banana:2:1.9
cherry:8:3.4
date:3:2.5
elderberry:7:1.8
需求
我们希望按照第二列的数值进行升序排列。
命令
指定以第二列进行排序:
sort -t : -nk 2 data.txt
结果
排序后的输出应为:
banana:2:1.9
date:3:2.5
apple:5:2.1
elderberry:7:1.8
cherry:8:3.4
命令
按照第三列降序排序:
sort -t : -nrk 3 data.txt
结果
降序排序后的输出为:
cherry:8:3.4
date:3:2.5
apple:5:2.1
banana:2:1.9
elderberry:7:1.8
6. crontab
命令
基本用法
crontab
用于定期调度任务,在指定时间自动执行脚本或命令。
编辑 Crontab
编辑当前用户的 crontab 文件:
crontab -e
查看 Crontab
查看当前用户的 crontab 任务:
crontab -l
删除 Crontab
删除当前用户的所有 crontab 任务:
crontab -r
说明:执行此命令后,用户的所有定时任务将被删除,小心使用,因为删除后无法撤销,如果需要删除一个特定的任务:
-
使用
crontab -e
打开编辑器。crontab -e
-
在编辑器中找到并删除你想要移除的那一行。
-
保存并退出编辑器。
Crontab 文件格式
每行表示一个任务,格式如下:
* * * * * command-to-execute
每个 *
的位置依次表示:分钟、小时、日、月、星期。
时间字段详解
- 分钟(0-59)
- 小时(0-23)
- 日(1-31)
- 月(1-12)
- 星期(0-7,0 和 7 都表示星期日)
特殊符号
*
:表示任何时间。,
:表示分隔多个值。-
:表示一个范围。/
:表示步进。
常用示例
1. 每天凌晨2点运行脚本
0 2 * * * /path/to/script.sh
2. 每小时的第15分钟运行
15 * * * * /path/to/script.sh
3. 每周一上午8点运行
0 8 * * 1 /path/to/script.sh
4. 每隔5分钟运行一次
*/5 * * * * /path/to/script.sh
5. 每月的第一天运行
0 0 1 * * /path/to/script.sh
6. 每小时的第0、15、30和45分钟各执行一次
0,15,30,45 * * * * /path/to/script.sh
7. 每小时的第0到5分钟,每分钟执行一次
0-5 * * * * /path/to/script.sh
8. 每分钟执行一次脚本的例子
* * * * * /path/to/script.sh