sed文本 免交互

目录

什么是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的主要功能包括:

  1. 删除:可以删除行或者指定字符/字符串。
  2. 插入和追加:可以在指定位置插入或追加文本。
  3. 查找和替换:可以查找特定字符或字符串,并将其替换为指定内容。
  4. 分割和合并:可以将文本按照特定规则分割成多个部分,或者将多个部分合并成一个整体。
  5. 输出:可以将处理结果输出到标准输出或文件中。

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/‘  文件名     &指代(在字符后添加字符)  

yH5BAAAAAAALAAAAAAOAA4AAAIMhI+py+0Po5y02qsKADs=wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值