目录
什么是sed
概念
格式
基本用法
命令的选项
打印第三行
打印日志文件
打印奇数行
打印偶数行
第三行退出
删除第三行
sed在不打开文件的情况下修改文件内容
在后面添加 选项a
在字符中间添加 \n 实现追加换行
全部追加
在前面插入 选项i
替换 选项c
修改文件内容 -i 与 -i.bak
-i.bak
搜索替代 (修改文件之前 请先备份 尤其是配置文件)
更改配置文件
sed ’s/r..t/&er/‘ 文件名 &指代(在字符后添加字符)
sed引用变量
分组后项引用
实例:提权限
过滤出ip地址
免交互
多行重定向格式
统计行数
更改密码
编写yum仓库
expect
格式
expect 中的相关命令
远程拷贝
编辑
远程免交互创建用户
什么是sed
概念
Sed(Stream Editor)是一种用于处理文本流的命令行工具。它以行为单位处理文本,通过特定的规则进行匹配、替换、删除等操作。Sed的主要功能包括:
- 删除:可以删除行或者指定字符/字符串。
- 插入和追加:可以在指定位置插入或追加文本。
- 查找和替换:可以查找特定字符或字符串,并将其替换为指定内容。
- 分割和合并:可以将文本按照特定规则分割成多个部分,或者将多个部分合并成一个整体。
- 输出:可以将处理结果输出到标准输出或文件中。
Sed的语法相对简单,通常使用正则表达式作为匹配规则,以实现复杂的文本处理需求。它既可以单独使用,也可以与其他命令组合使用,灵活性强且效率高
sed 自己的语法
语法:输出哪些行,留下哪些
语法:范围 + 操作 打印屏幕上
处理文件的哪些行 (如:1-10 5-6)
格式
sed [option]... 'script;script;...' [input file...]
选项 自身脚本语法 支持标准输入管道
基本用法
sed ‘ ’ (自动打印功能)=cat的用法
命令的选项
sed
-n 关闭自动打印
-p 手动打印
-q 提前退出 (3q 第三行退出)
d 删除 (3d 删除第三行)
a 后面追加 (3a 第三行后面追加)
a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
i 上面插入 3i 第三行上面添加
i [\]text 在行前面插入文本
c 替换 3c 将第三行 整行替换
c [\]text 替换行为单行或多行文本
-r 使用拓展正则
-i 实际修改文件的内容
-i.bak 实际修改前先备份 源文件 会产生一个 源文件 .bak的文件
语法字母 sed ' p' 打印
打印第三行
打印日志文件
[root@localhost/opt] # sed -n '/2:47/,/2:48/p' log
打印奇数行
打印偶数行
第三行退出
删除第三行
sed在不打开文件的情况下修改文件内容
在后面添加 选项a
在字符中间添加 \n 实现追加换行
全部追加
在前面插入 选项i
替换 选项c
修改文件内容 -i 与 -i.bak
-i.bak
[root@localhost/ooo] # cat 999.txt
1
2
3
4
5
6
7
8
9
[root@localhost/ooo] # sed -i.bak '2~2d' 999.txt
[root@localhost/ooo] # cat 999.txt
1
3
5
7
9
[root@localhost/ooo] # ls
0.txt 4 555 999.txt log xx1.d xx3.d xx5.d xx7.d xx9.d xx.log
1 5 666 999.txt.bak test xx2.d xx4.d xx6.d xx8.d xx.d
#又生成新文件.bak结尾
[root@localhost/ooo] # cat 999.txt.bak #查看为源文件
1
2
3
4
5
6
7
8
9
搜索替代 (修改文件之前 请先备份 尤其是配置文件)
范围 s/旧字符/新字符/修饰符 文件名
sed -i.bak 先备份
更改配置文件
sed ’s/r..t/&er/‘ 文件名 &指代(在字符后添加字符)
sed引用变量
分组后项引用
s /(1)(2)(3)\1\2\3/p
\1 第一个括号中的内容
实例:提权限
过滤出ip地址
[root@localhost/ooo] # ifconfig ens33|sed -nr '2p' #打印第二行inet 192.168.17.55 netmask 255.255.255.0 broadcast 192.168.17.255
[root@localhost/ooo] # ifconfig ens33|sed -nr '2s/.*inet (.*) netmask.*/\1/p'# .*inet 为一段 (.*)为一组 中间两个空格 netmask.*为一段 打印出一个分组
192.168.17.55
免交互
多行重定向格式
命令 << 标记
...
......
标记
统计行数
[root@localhost/ooo] # wc -l <<EOF
> dd
> dfdf
> EOF
2 #统计两行
更改密码
[root@localhost/ooo] # passwd xyc <<EOF
> 1234
> 1234
> EOF
更改用户 xyc 的密码 。
新的 密码:无效的密码: 密码少于 8 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。
编写yum仓库
cat <<EOF >centos7.repo
expect
格式
expect [选项] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ]
expect 中的相关命令
spawn 开启免交互 开启expect
expect 捕捉 屏幕上的 关键字
exp_continue 继续捕捉屏幕上的字
send 发送指令
interact 代表用于将交互权限交给用户进行操作。它主要用于退出自动化,进入人工交互
远程拷贝
#!/usr/bin/expect$
spawn scp /etc/fstab 192.168.17.25:/data$ #将fstab拷贝到192.168.17.25的data下
expect {$"yes/no" { send "yes\n";exp_continue }$"password" { send "123\n" }$
}$
expect eof$
远程免交互创建用户
#!/usr/bin/expect
spawn ssh 192.168.17.25
expect {"yes/no" { send "yes\n"; exp_continue }"password" { send "123\n";exp_continue }"#" { send "useradd lisi \n"}
}interact