文本三剑客之一:解锁sed的强大秘籍,让文本处理轻松无忧!转载

sed 

sed处理的是行

sed 不打开文件的情况下更改文件的内容

sed [选项 ] ...{脚本语法} 文件名

sed 自己的语法:输出哪些行,留下哪些行

语法:范围+操作

 


sed命令的选项
-i:实际修改文件内容
-i.bak:实际修改前先备份原文件,会产生一个源文件.bak的文件
-n:关闭自动打印
-r:使用扩展正则表达式

语法字母在单引号中
-p:打印
-q:提前退出    3q  打印到第三行退出
-d:删除       3d  删除第三行
-a:后面追加    3a 第三行后面添加
-i: 上面插入    3i  第三行上面添加
-c: 替换       3c将第三行的内容替换
=:行号

 

图片

 

 sed取奇偶数

图片

 #提取奇数行,打印第一行内容,返回第二行内容

图片

 #提取偶数行,返回第一行内容,打印第二行内容

同时sed还可以打印两个正则表达式之间的行

比如这里我想提取b开头和f开头中间的行

图片

图片

#将cat的结果传给sed,sed在根据要求打印内容

如果有多个复合条件的表达式时

会在找b开的和f开头的内容后,在重新查找b开头的内容,一直找到有f开头的行,如果没有f开头的行,就全部显示

sed可以在不打开文件的情况下,修改文件的内容

图片

 #这个文件夹中只有这10个数字

图片

图片

 #可以看到我们先是将源文件中的偶数行去除,然后又在第二行后追加了一个haha

搜索替代:

 


标准姿势:
s/旧内容/新内容/修饰符
也可以表示为
s#旧内容#新内容#修饰符

s@旧内容@新内容@修饰符

修饰符:
g  行内全局替换
p  显示替换成功的行
w  将替换成功的行保存至文件中
i,I 忽略大小写 

 

 替换练习

将该内容中的SELINUX=enforcing替换成SELINUX=enable

图片

 #在更改一个文件之前,一定要记得备份,以防万一

可以使用i.bak备份文件

图片

 #使用i.bak备份文件,会在目录中新建一个以.bak结尾的备份文件,该文件和源文件相同

图片

 

图片

 #打印passwd文件中含有$name的行
$name=root
-r:表示使用拓展正则表达式

分组后项引用

只有扩展正则表达式才能支持分组

图片

 练习1:

提取网卡信息,只提取图中画圈IP地址

图片

图片

#.*inet:表示图中inet前的空格
#(.*):第二个.*表示IP地址,打上括号表示他为一组
#netmask.*:表示图中netmask向后的内容
#然后提取第一组内容就可以得到我们需要的IP地址

练习2:

提取图中的版本号数字部分

图片

图片

 #以-为分隔符提取.jar前的内容

 

练习3:

提取文件权限的数字部分

图片

图片

 #提取范围是第四行,提取括号内连续的4个数字

 

免交互

多行重定向

cat  >目标文件 <<eof
eof

图片

 #可以多行同时传到指定的文件
#目标文件的位置可以在eof前,也可以在eof后

expect

可以解决shell脚本中交互的相关问题

需要下载

yum install expect -y

 

#相关关键词
spawn  开启免交互  开启expect
expect  捕捉  屏幕上的  关键词
exp_continue   继续捕捉屏幕上的字
send  发送指令
interact   代表退出 expect  但是会留在新的终端
expect eof 代表
退出 ecpect  默认 10s后 返回旧的终端
set  设置变量

expect脚本不可以使用bash解释器

#!/usr/bin/expect

图片

链接:https://www.cnblogs.com/chenjw0608/p/17862716.html

posted on   我和你并没有不同  阅读(16)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2021-10-16 ceph
2019-10-16 数据结构和算法 笔记2 https://facert.gitbooks.io/python-data-structure-cn/
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示