目录
一、sed语言
在不打开文件的情况下修改文件内容,取一行,处理一行,输出一行,直到最后一行。
(一)语法
sed [选项] ‘{自身脚本语法}’ [输入文件]
(二)sed脚本语法及命令
1.p手动打印
p 将内容打印到屏幕,使用时关闭自动打印功能,-n选项
命令 | 结果 |
'3p' | 打印第3行 |
'1,3p' | 打印1-3行 |
'$p' | 最后一行 |
'1~2p' | 打印奇数行(~ 步进,1~2,1个间隔,每间隔1个打印一次) |
'0`2p' | 打印偶数行(~ 步进,0~2,2个间隔,每间隔2个打印一次) |
2.q 提前退出
3.d 删除行
‘nd’ 删除第n行
‘n,md’ 删除n-m行
4.a 在指定行后面追加文本
支持使用\n实现多行追加
‘naABC’ 在第n行后追加ABC
'naABC\nEFG' 在第n行后追加两行,第1行为ABC,第2行为EFG
5.i 在指定行前面追加文本
用法同a
6.c 替换指定行
‘ncABC’ 将第n行替换成ABC
支持使用\n实现替换多行
(三) sed 选项
1.-n 选项
sed默认有自动打印功能,-n选项是关闭打印功能,一般配合脚本命令p使用
2.-r 选项
开启扩展正则表达式
3.-i 选项
在文件中添加内容,可以在-i是加.bak后缀备份修改的文件
(四)搜索替换
s/旧字符/新字符/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###
(五)分组后项引用
( )内的按顺序标为123 ,引用时\1调用第一个()的内容,\n表示调用第n个()的内容,.*表示任意长度字符不管是什么字符
(六)示例
二、免交互
(一)多行重定向
在文件中修改多行
1.格式
命令<< 开始标记符(通常为EOF)
输入内容
...
结束标记符(与开始标记符一致)
2.示例
(二)expect语言
1.定义
是建立在tcl(tool command language)语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互的相关问题,使用前需要安装(yum install -y expect)。
2.基本命令
① 脚本解释器
expect 脚本中首先引入文件,表明使用的是哪一种shell。expect的为:/usr/bin/expect
②spawn命令
用于捕捉关键词,后面常跟一个linux执行命令。
③expect命令
用于判断上层捕捉输出的结果是否有指定字符,有则立即返回,没有则默认等待10s。
④send命令
expect命令判断完成需要返回时,发送需要交互的指令,想要传递给电脑的文字或字符,该命令不能自动回车换行,\n和\r是回车。
⑤结束符
(1) expect eof 结束并返回原来环境,原来主机。
(2) interact 结束但是不会返回原来的地方,保持当前状态,当前主机。
3.示例
用expect脚本执行ssh远程连接192.168.233.20