设为首页
收藏本站
黑币充值
VIP购买
用户登录
用户注册
请
登录
后使用快捷导航
没有帐号?
会员注册
用户名
Email
自动登录
找回密码
密码
登录
会员注册
论坛
家园
任务
排行榜
服务器
总版规
广告投放
邀请码
VIP购买
官方QQ群:
每日签到
会员求助
云排名
计算机基础
黑帽seo
白帽seo
建站分享
网赚营销
网络安全
linux交流
windows
资源教程
编程开发
数据库
艺术设计
视频制作
IT新闻
人生百态
金点子
每日签到
信息监察
站务公告
职位申请
站内投稿
站群服务
黑帽联盟
»
论坛
›
系统/web安全
›
linux交流
›
Linux centos7 sed命令学深一点
返回列表
查看:
131
|
回复:
0
[资源教程]
Linux centos7 sed命令学深一点
[复制链接]
定位
定位
当前离线
窥视卡
雷达卡
895
主题
38
听众
3322
积分
管理员
TA的每日心情
怒
昨天 13:01
签到天数: 1643 天
[LV.Master]伴坛终老
收听TA
发消息
电梯直达
楼主
|
只看该作者
|
倒序浏览
本文详细介绍了sed命令,包括如何在sed中引入变量,以及如何使用w(写文件)、r(读文件)和c(替换)命令进行行处理。重点讲解了模式空间和保持空间的概念,并通过实际案例演示了如何利用这些特性交换文件中的行内容。
相关链接:https://bbs.cnblackhat.com/thread-3119-1-1.html(
sed的常用选项
)
sed命令是流编辑器,对文件中的行一一处理,得到需要的结果。可增删改查文件,把处理后的数据重定向到新文件,或修改原文件。
在sed命令中引入变量、行处理、模式空间与保持空间是本文的重点。其中为了讨论方便,还引入了sed命令中的写文件与读文件。
一、sed中引入变量
我们先定义一些变量,在sed中使用。
sed命令中引入变量,共有三种方法。
1.命令使用单引号
sed命令使用单引号的情况下,可以使用'"$var"'引用(单引号,然后双引号,变量):
sed '3s/test/'"$i"'/' /home/zhang3/a1.txt
2.命令使用双引号
sed命令中使用双引号的情况下,直接使用变量。
sed "4s/demo/$i/" /home/zhang3/a1.txt
3.添加eval命令
使用单引号,变量直接引用,但是需要通过eval执行这个sed命令。eval会对后面Shell命令进行两遍扫描,如果第一遍扫描后,Shell命令是个普通命令,则执行此命令;如果Shell命令是含有变量的间接引用,则保证间接引用的语义。
命令行可以测试:
name=lisi
eval sed -i 's/games/${name}/g' passwd
2024-8-26 00:22 上传
下载附件
(45.12 KB)
二、sed中读写文件
1.w文件
sed支持写文件命令。命令为单字母w,是write的缩写。
sed w命令用于将模式缓冲区的内容存储在另一文件中。
w语法
[address1[,address2]]w file
file是目标文件路径,也就是内容要备份/拷贝到的目标文件地址。
address1和 address2分别是 起始地址和结束地址,可以是行号或模式字符串。
address1和address2都是可选参数,可不填,这时候就是全文件拷本/备份了。
如果存在一个参数,那么就是备份单行。也就是只备份address1指定的那行。
如果file参数指定的文件不存在,sed会新建文件。
如果file参数指定的文件已经存在,sed会删除原内容。
案例
sed '3w line3' passwd
把文件passwd的第3行内容写入新文件line3中
2024-8-26 00:22 上传
下载附件
(20.73 KB)
sed '2,5 w demo.txt' passwd
把文件passwd的第2-5行内容写入demo文件中
2024-8-26 00:22 上传
下载附件
(29.43 KB)
sed '4,$w file.txt' passwd
把文件passwd的第4至最后一行内容写入file文件中
2024-8-26 00:22 上传
下载附件
(37.6 KB)
注意:
此处,$代表最后一行
w与文件名之间要有空格
起始地址和结束地址与w之间有没有空格都可以。
2.r文件
r 是读文件命令
r 是read 的缩写,后者翻译为中文是读取的意思。
r 命令的使用语法格式如下
[address1[,address]]r file
address1 和 address2 用于行寻址,可以是行号或者模式。
写入文件可以是一行或多行,但读文件最好是某一行之后:
sed -n '2r demo.txt' passwd
2024-8-26 00:22 上传
下载附件
(20.95 KB)
如果用多行,将多次写同样的文件。重复!
sed -n '2,5r line3' passwd
2024-8-26 00:22 上传
下载附件
(21.61 KB)
3.c修改行
c是替换命令
sed提供了单字母命令 c用来完成变更或替换的操作。
c 是change的首字母,后者是变更的意思。
这里的变更或替换并不是替换几个字符,而是把符合条件的行替换为新行。
如果指定的条件是行范围,则会把从开始行到结束行都替换为新行。
单字母命令 c 的语法格式如下
[address1[,address2]] c Replace text
address1 和 address2 是行寻址的开始行和结束行
行寻址是一行,变更或替换的是一行
行寻址是区间,将把所有区间的行变更或替换为一行
变更或替换的,可以是字符串,也可以是变量,也可以是shell命令。
多行替换为一行字符串
2024-8-26 00:22 上传
下载附件
(35.35 KB)
多行用变量替换为一行字符串
2024-8-26 00:22 上传
下载附件
(32.5 KB)
多行用shell命令替换为一行字符串
2024-8-26 00:22 上传
下载附件
(28.89 KB)
三、保持空间
sed之所以能以行为单位的编辑或修改文本,其原因在于它使用了两个空间:模式空间(pattern space)和保持空间(hold space)。
模式空间
:可以想成工程里面的流水线,数据之间在它上面进行处理,用于处理文本行。
保持空间
:可以想象成仓库,我们在进行数据处理的时候,作为数据的暂存区域,用于保留文本行,是保存已经处理过的输入行,默认有一个空行。
与模式空间和保持空间相关的命令:
h 把模式空间的内容复制到保留空间,覆盖模式
H 把模式空间的内容追加到保留空间,追加模式
g 把保留空间的内容复制到模式空间,覆盖模式
G 把保留空间的内容追加到模式空间,追加模式
x 将暂存空间的内容于模式空间里的当前行互换。
四、应用案例
我们先准备一个10行的测试文件passwd
2024-8-26 00:22 上传
下载附件
(31.59 KB)
我们案例与实践是:把文件中的2和5行交换一下,内容调换
1.变量方法
我们先把两行分别定义一个变量,在相应行中替换变量,达到交换行内容的目的。
把第2行和第5行各定义为一个变量line2 line5
2024-8-26 00:22 上传
下载附件
(16.91 KB)
我们把第2行替换为变量line5的值,把第5行替换为变量line2的值
sed -e "2c $line5" -e "5c $line2" passwd
2024-8-26 00:22 上传
下载附件
(35.27 KB)
执行后达到要求。
2.读写文件方法
我们先把两行分别写到一个文件中,在相应行中读取文件,达到交换行内容的目的。
把第2行和第5行各写为文件line2.txt 和line5.txt
sed -e '2w line2.txt' -e '5w line5.txt' passwd
2024-8-26 00:22 上传
下载附件
(17.29 KB)
我们把第2行读取文件line5.txt,把第5行读取文件line2.txt。
在读取文件前,两行都需要先删除本行内容。
2024-8-26 00:22 上传
下载附件
(39.31 KB)
3.借助保持空间方法
因为sed是按行读取的,第2行处理时,是不能借用后面各行内容的。而前面行的内容可以传递到保持空间而暂时保存数据的。
第2行内容先传递到保持空间,再替换为变量line2或读取文件line5.txt或执行shell命令
第5行内容可以把保持空间的数据交换回来。最终达到交换两行内容的目的。
2024-8-26 00:22 上传
下载附件
(40.59 KB)
文章转载自:https://blog.csdn.net/qq_36142959/article/details/132119712
转播
0
淘帖
0
分享
0
收藏
0
赞
0
踩
0
帖子永久地址:
推荐给好友
黑帽联盟 - 论坛版权
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与
黑帽联盟
享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和
黑帽联盟
的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、
黑帽联盟
管理员和版主有权不事先通知发贴者而删除本文
勿忘初心,方得始终!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
会员注册
发表回复
回帖并转播
回帖后跳转到最后一页
发布主题
!fastreply!
收藏帖子
返回列表
搜索
个人中心
个人中心
登录或注册
回顶部
积分 0, 距离下一级还需 积分
回顶部