SED+免交户

发布时间 2023-11-28 18:39:06作者: citywalk

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用户,并设置密码