SED
读取一行处理一行
在不打开文件的情况下 去修改文件内容
sed '语法'
sed 自己的语法
语法:输出哪些行,留下哪些
语法:
范围+操作 打印屏幕上
(不写范围表示全文)
地址+命令
有自动打印功能
sed [option] 选项)
命令的选项
-n #关闭自动打印 -r #使用扩展正则 -e # 以什么开头 -f #从指定文件中读取编辑脚本 -i #实际修改 -i.bak #实际修改前先备份 源文件 会产生一个源文件.bak的文件 #说明: -ir 不支持 -i -r 支持 -ri 支持 -ni 会清空文件
#打印 /etc/passwd 中以r,b开头的行
#在123文件下 第三行后加入hello,查看没有加入
#加了-i (实际修改) 再查看已经成功再第三行后加入hello。 但在生产环境中建议备份个源文件再操作。不然出错导致源文件混淆。
#在i 输入个 .bak的后缀,会自动备份个文件并且命名为.bak结尾的
#备份后的文件正是修改后的文件。
语法字母 ' '
p #手动打印 q #提前退出 ('3q' 第三行退出) d #删除 ('3d' 删除第三行) a # 后面追加 ('3ahello' 在第三行加入hello) i #上面插入 ('3i' 第三行上面添加) c #替换 ('3c' 将第三行替换) w #写入 = #显示行号
一
#a (后面追加) 在第三行后追加 hello
#想在后面再次追加个注释。这样两个注释会连载一起
#在后面要追加的注释前加个n
二
#i (上面插入)1i 在第一行插入。插入个ok
三
#c (替换) 将第三行替换成哈哈
四
#w (写入) 将第三行 写入 cc.txt 文件中
五
#打印 /etc/passwd 中第三行
#打印 1到3行
六
#提取 99文件下 18:11到18:14的 行
七
#打印 奇数行
八
# !取反,打印偶数行
#打印 偶数行
九
#把第一行放入高及空间打印后一行。
#先打第一行把后一行放入高级空间。
搜索替代
s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s### 替换修饰符: g 行内全局替换 p 显示替换成功的行 w /PATH/FILE 将替换成功的行保存至文件中 I,i 忽略大小写
范围 s/旧字符/新字符/修饰符
修改文件前 请先备份 尤其是配置文件
sed 's///'
一
#修改配置文件
#将 源文件备份改名为以.bak 。 将enforcing改成enable
#备份的源文件,没变。
#原来的配置文件以改变
二
#将test里以r开头t结尾的单词 后加入er
三
#先给name定量,在用变量来 扩展正则。来提取所需行
分组后项引用
只有扩展正则表达才能支持分组
一
#分区打印第一组
#前面不分组,后面分组,只打印后面分组的
二
#打印IP地址 ,IP地址在第二行,以inet为媒介,.*表示inet前面的,空格 ()分组指inet后面的所有。 netmask.*指 netmask后面所有。 打印第一组。
三
#想打印 文件test中数字,以-为媒介。 将数字范围分组,取第一组
四、打印权限一行的数字
#打印 第四行,过滤4个数字
五
#打印 圈中200
免交户
cat
tee #加强版的cat 自带重定向功能
多行重定向
一
#第一个eof表示开始,第二个eof表示结束。第二个eof后不要有东西,不然系统默认你还没有结束
二
# tee 加强版cat tee会自动帮你生成文件。不需要导入。
expect
免交户语法 (需要yum安装)
捕捉输出在屏幕上的字 捕捉关键字 (比如yes/no)
spawn #(开启免交户) expect #(捕捉关键字) eof / interact # 结束符 二选一 留用interact,不留用eof set #设置变量 expect eof #表示交互结束,等待执行结束,退回到原用户
interact # 执行完成后保持交互状态, 把控制权交给控制台,会停留在目标终端而不是退回到原终端 send 用于向进程发送字符串 exp_continue 匹配多个字符串在执行动作后加此命令 interact 允许用户交互expect eof
一、免交户连接
# send "yes\n" n和r都可以
二、给三个服务器 做免交户。创建test用户,并设置密码
标签:免交,eof,文件,第三行,打印,源文件,SED From: https://www.cnblogs.com/yanrui07/p/17862687.html