“三把绝世宝剑组成剑客”①

sed

当从文件中读取一行后,首先放到模式空间中对该行进行相关的处理,处理完后将结果输出到屏幕上,然后继续处理下一行内容,直到所有的行都读取完毕,sed结束

语法:
sed [选项] ‘地址+子命令’ 文件名
选项
-n 静默输出,不输出未匹配到的行,只输出匹配的行
-e 允许进行多项编辑,也就是说同一行可以做多次处理
-f 后接sed脚本,执行指定的sed脚本
-r 使用扩展正则
-i 直接作用于源文件

地址
地址决定用户对哪些行进行编辑
地址可以是数字,正则表达式或者两者结合
如果不指定地址,默认处理所有行

1、x 处理第x行
[root@ops14 20200724]# sed -n ‘1p’ ex.sh 输出第一行
[root@ops14 20200724]# sed -n ‘5p’ ex.sh 输出第五行
2、x,y 处理第x行到第y行
sed -n ‘1,5p’ ex.sh 输出1-5行
3、x,+y 从第x行开始,再加y行
sed -n ‘5,+4p’ ex.sh
4、处理符合正则表达式的行 /正则/
sed -n ‘/^root/p’ /etc/passwd
5、从满足第一个正则的行,到满足第二个正则的行
文件如果没有处理完,后面符合条件的行会继续处理
sed -n ‘/r/,/s/p’ /etc/passwd :以r开头,以s开头
sed -n ‘/root/,/s/p’ /etc/passwd
sed -n ‘2,/^s/p’ /etc/passwd 第二行开头,s结尾
6、 最 后 一 行 s e d − n ‘ 最后一行 sed -n ‘ sednp’ /etc/passwd

子命令
p print 打印输出
d delete 删除
sed ‘/^root/d’ pass5
a\text 在满足条件的行下方加一行
sed ‘1a\hello’ pass5
i\text 在满足条件的行上方加一行
sed ‘1i\hello’ pass5
c\text 覆盖满足条件的行
sed ‘1c\hello’ pass5
! 对不满足条件的行执行命令
sed ‘1,3!c\hello’ pass5 :前三行变成其他,后面三行不变
s 替换字符串
语法:
s/// s### s@@@
sed ‘s/bin/BIN/’ pass5 将每一行的第一个bin替换成BIN
sed ‘s/bin/BIN/g’ pass5 替换匹配到的所有bin

r 从文件中读
[root@ops14 20200724]# cat haha
aa
bb
cc
dd
[root@ops14 20200724]# cat heihei
111
222
33
44
5677
#将haha的内容读到heihei中33开头的下一行
sed ‘/^33/r haha’ heihei
w 将行写入文件
sed ‘/^2/w test’ heihei #将2开头的行写入test文件

定时任务(计划任务)
让计算机在指定的时间执行指定的任务
分类:
at 一次性任务
crontab 周期性任务

at命令
一次性任务
使用at之前,需要开启atd服务
CentOS7 查看服务状态
systemctl status 服务名
CentOS6
service 服务名 status

开启服务
7:systemctl start 服务名
6:service 服务名 start

关闭服务
7:systemctl stop 服务名
6:service 服务名 stop

开机自启动
systemctl enable 服务名

开机不自动启动
systemctl disable 服务名

查看atd服务是否开启
systemctl status atd

语法
at 时间
选项:
-l 查看计划任务
-d 删除计划任务
-c 查看计划任务的具体内容

例子:凌晨2点清空/tmp目录,并重启服务器
[root@zhendong yum.repos.d]# at 02:00 #指定在凌晨2点执行计划
at> rm -rf /tmp/* #清空/tmp目录
at> reboot #重启
at> #ctrl+d结束
job 1 at Fri Jul 17 02:00:00 2020 #系统提示有一个编号为1的计划任务

at -l 查看计划任务
at -c 1 查看编号为1的任务
at -d 1 删除计划任务

另外一种创建方式
echo “ls;date;pwd” | at 04:00

用at定时执行指定的文件(-f 文件名)
at 04:00 -f /opt/a.sh

crontab
周期性的计划任务
选项
-u 指定执行任务的用户,默认当前用户
-l 查看计划任务
-r 删除计划任务
-e 编辑计划任务

crontab文件
每一行是一个周期性任务
min hour day month week command
分 时 日 月 星期 动作(命令)

时间段
-一段连续时间 5-10
, 不连续时间 5,10
* 所有的时间
/ 间隔时间

口诀:
分、时、日、月、周

猜你喜欢

转载自blog.csdn.net/weixin_51014063/article/details/108879653