分享好友 系统运维首页 频道列表

linux的sed(增删改查)使用方法 linux教程:sed命令的用法

Linux系统  2023-02-10 03:060

sed的增删改查的基本操作

参考:https://www.cnblogs.com/0zcl/p/6855740.html

01:增(a)

2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 被写入到原文件中,如果需要修改原文件则需要用大 -i )

  eg:修改原文件的内容。为了防止修改配置文件,一定要实现辈分或则用测试文件测试

sed  -i  '2a ppppppp' test.txt  #在第二行之后添加数据,并写入到原文件

 

  • “a”:追加文本到指定行后,记忆方法:a的全拼是append,意思是追加。
  • “i“:插入文本到指定行前,记忆方法:i的全拼是insert,意思是插入。
[root@tom /]# cat test.txt
xxxxxxxxxxxx
mmmmmmmmmmmm
hhhhhhhhh

[root@tom /]# sed '2a ppppppp' test.txt   #2a  代表在第二行之后进行 添加 操作
xxxxxxxxxxxx
mmmmmmmmmmmm      #新增的内容
ppppppp
hhhhhhhhh

[root@tom /]# sed '2i 9999' test.txt    #2i 代表在第二行之前进行 插入 操作
xxxxxxxxxxxx
9999        #新插入的内容
mmmmmmmmmmmm
hhhhhhhhh

总结:插入i 在之前, a添加在之后

ps:单引号和双引号的用法

#单引号--变量$PATH会将文本内容原封不动插入,不会解释成路径

#双引号--变量$PATH被解析以后在当作文本进行插入

总结:
  • 如果引号里面是普通字符串的话,你可以任意使用单引号或者双引号:
  • 如果引号里面是变量或者带反引号的命令的话,你想要变量解析的结果或者命令执行的结果,那就使用双引号;你想要引号内的原样字符串,那就使用单引号。
 

linux的sed(增删改查)使用方法

02:添加多行文本到一个文件中并写入到原文件中

[root@tom /]# cat test.txt
xxxxxxxxxxxx
mmmmmmmmmmmm
kkkkkkkkkkkk


[root@tom /]# sed -i "3a qq\nwww\neee\nrrr\nttt\nyyy\nuuu" test.txt # -i 代表写入原文件, \n 代表换行,一定不能忘记写 \n 不然不会起作用
[root@tom /]# cat test.txt
xxxxxxxxxxxx
mmmmmmmmmmmm
kkkkkkkkkkkk
qq
www
eee
rrr
ttt
yyy
uuu



 03:删除

 1.删除单行文本(删除第三行文本)

[root@tom /]# sed "3d" test.txt    #3d  数字代表第几行,d代表删除
xxxxxxxxxxxx
mmmmmmmmmmmm
qq
www
eee
rrr
ttt
yyy
uuu

 2.删除第2行到第三行的数据

[root@tom /]# cat test.txt    
xxxxxxxxxxxx
mmmmmmmmmmmm
kkkkkkkkkkkk
qq
www
eee
rrr
ttt
yyy
uuu



[root@tom /]# sed "2,3d" test.txt     #删除第二行到第三行的数据(包含这首位这两个)
xxxxxxxxxxxx
qq
www
eee
rrr
ttt
yyy
uuu

3.正则匹配删除

  在sed软件中,使用正则的格式和awk一样,使用2个”/“包含指定的正则表达式,即“/正则表达式/”。

  "/k/d"有哪一行有k则删除这一行。 

[root@tom /]# cat test.txt
xxxxxxxxxxxx
mmmmmmmmmmmm
kkkkkkkkkkkk
qq
www
eee
rrr
ttt
yyy
uuu


[root@tom /]# sed "/k/d" test.txt  #删除包含k的这一行内容
xxxxxxxxxxxx
mmmmmmmmmmmm
qq
www
eee
rrr
ttt
yyy
uuu

正则表达式形式的多行删除,也是以逗号分隔2个地址,最后结果是删除包含“k”的行到包含“x”的行

[root@tom /]# cat test.txt
xxxxxxxxxxxx
mmmmmmmmmmmm
kkkkkkkkkkkk
qq
www
eee
rrr
ttt
yyy
uuu

[root@tom /]# sed "/m/,/y/d" test.txt   #删除包含m到包含y的行
xxxxxxxxxxxx
uuu

正则表达式我们知道“$”代表行尾,在sed中“$”代表文件的最后一行。

例子:

[root@tom /]# sed "/3,$/d" test.txt
xxxxxxxxxxxx
mmmmmmmmmmmm
kkkkkkkkkkkk
qq
www
eee
rrr
ttt
yyy
uuu


[root@tom /]# sed "3,\$d" test.txt
xxxxxxxxxxxx
mmmmmmmmmmmm
[root@tom /]# 

4:sed文本内容替换

  • “s”:单独使用-->将每一行中第一处匹配的字符串进行替换==>sed命令
  • “g”:每一行进行全部替换-->sed命令s的替换标志之一(全局替换),非sed命令。
  • “-i”:修改文件内容-->sed软件的选项,注意和sed命令i区别。

sed软件替换模型  ===>  sed -i 's#目标内容#替换内容#g'

  • 定界符/或#,第一个和第二个之间的就是被替换的内容,第二个和第三个之间的就是替换后的内容。建议使用#作为定界符。
  • s#目标内容#替换内容#g ,“目标内容”能用正则表达式,但替换内容不能用,必须是具体的。因为替换内容使用正则的话会让sed软件无所适从,它不知道你要替换什么内容。
  • 默认sed软件是对模式空间(内存中的数据)操作,而-i选项会更改磁盘上的文件内容。
[root@tom /]# cat test.txt
xxxxxxxxxxxx
mmmmmmmmmmmm
kkkkkkkkkkkk
qq
www
eee
rrr
ttt
yyy
uuu

[root@tom /]# sed "s#m#b#g" test.txt   #将文本中的m全部替换成b,   s代表替换的意思,g代表全部
xxxxxxxxxxxx
bbbbbbbbbbbb
kkkkkkkkkkkk
qq
www
eee
rrr
ttt
yyy
uuu

 

查看更多关于【Linux系统】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
linux下如何单独编译设备树? linux设备树是什么
答: make vendor/device_name.dtb  如: make freescale/fsl-1043a-rdb.dtb

0评论2023-02-10369

移植linux3.7到nuc900系列开发板遇到的问题
通过移植学习linux新版本内核,大概了解一下内核变化。记录一下移植过程中遇到的问题或值得注意的地方。1,添加一款arm9芯片的支持首先修改\arch\arm\tools\mach-types文件添加一行w90p950evbMACH_W90P950EVBW90P950EVB同目录下的脚本文件在编译内核时会根据

0评论2023-02-10697

linux下安装redis3.2
这部分来自网络: http://blog.csdn.net/cuibruce/article/details/535015321.下载下载地址:http://www.redis.io/download选取当前最新版本3.2.1下载,上传到linux上,进行解压缩:[root@mongodb1 redis]# lsredis-3.2.1 redis-3.2.1.tar.gz进入redis-3.2.1目录

0评论2023-02-10962

终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误
终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误http://blog.csdn.net/zklth/article/details/7184032Linux下 和 Windows 下 Oracle Instant Client 的安装.http://fableking.iteye.com/blog/2115724 http

0评论2023-02-10637

linux lvm删除导致无法启动
要想编辑/etc/fstab文件,我们需要在系统中重新挂载根目录,使其具有可读写状态,使用如下命令:mount -o remount,rw /该条命令的作用是,以可读写的形式重新挂载根分区。然后再编辑/etc/fstab文件,就可以正常编辑。如下:

0评论2023-02-10931

linux中的strip命令简介------给文件脱衣服【转】
转自:http://blog.csdn.net/stpeace/article/details/47090255版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。作为一名Linux开发人员, 如果没有听说过strip命令, 那是很不应该的。 strip这个单词,

0评论2023-02-10728

linux下常用文件系统 linux支持的文件系统
不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统。Linux内核支持十多种不同类型的文件系统,下面对Linux常用的文件系统作一个简单介绍。ext2与ext3文件系统ext是第一个专门为Lin

0评论2023-02-10794

linux下将Python环境默认更改为Python3.6
步骤:#删除原来指向python2的软链接sudo mv /usr/bin/python /usr/bin/python.bak #/usr/local/python3.6/bin/python3.6 这个路径为实际的python3.6的bin文件夹下的Python3.6的路径,这个按照自己的实际情况进行更改 sudo ln -s /usr/bin/python3.6 /usr/bin

0评论2023-02-10852

Linux更改SSH默认端口 linux设置ssh端口
1.修改ssh配置文件  vim /etc/ssh/sshd_config  将 #Port 22 改为 Port 10023(更改的端口号最好在1024~65535间,不和其他服务端口冲突就ok)2.关闭防火墙  systemctl stop firewalld.service3.重启ssh服务  systemctl restart sshd.service4.新建ssh

0评论2023-02-10765

mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached
刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%。汗呀。 本文就来剖析一下mongodb对内存的具体使用方法,以及生产环境针对mongodb占大量内存的问题的解决

0评论2023-02-10641

linux grep命令参数及用法详解---linux管道命令grep
功能说明:查找文件里符合条件的字符串。语  法:grep [-abcEFGhHilLnqrsvVwxy][-A显示列数][-B显示列数][-C显示列数][-d进行动作][-e范本样式][-f范本文件][--help][范本样式][文件或目录...]补充说明:grep 指令用于查找内容包含指定的范本样式的文件,

0评论2023-02-10315

更多推荐