sed入门

摘要:
我的记法是a=after,i=infront。不过官方的man文件里不是这样解释的,man文件里是这样解释的:atextAppendtext,whichhaseachembeddednewlineprecededbyabackslash.itextInserttext,whichhaseachembeddednewlineprecededbyabackslash.而且其可以配合find查找的内容处理,如下:find.-nameserver.xml|xargssed-i'/directory/i'二、在某行前或后加一行内容sed-i'N;4addpdf'a.txtsed-i'N;4ieepdf'a.txt这里指定的行号是第四行。N;s/.*n/1/;ta'-e'P;D'server.xml删除指定文件的下一行sed-i'/pattern="%/{n;d}'server.xmlsed-i'3s/aaa/fff/'file--表示针对file文件中的第三行,将其中的aaa替换为fffsed-i'/xxx/s/aaa/fff/g'file--表示针对文件,找出包含xxx的行,并将其中的aaa替换为fffsed-i'1s/[#*]/fff/gp'file--表示针对文件第1行,将其中的#号或是*号替换为fff

一、在某行的前一行或后一行添加内容

具休操作如下:

#匹配行前加
sed -i '/allow 361way.com/iallow www.361way.com'the.conf.file
#匹配行前后
sed -i '/allow 361way.com/aallow www.361way.com'the.conf.file

而在书写的时候为便与区分,往往会在i和a前面加一个反加一个反斜扛。代码就变成了:

sed -i '/2222222222/a3333333333'test.txt
sed -i '/2222222222/i3333333333'test.txt

这就就可以很方便的看出要在某一行前或某一行后加入什么内容 。不过经常我记不住a 、i 那个是前那个是后。我的记法是a = after ,i = in front 。这样就知道 i 是前,a 是后了。不过官方的man文件里不是这样解释的,man文件里是这样解释的:

a
text   Appendtext,which has each embedded newline preceded by a backslash.
i
text   Inserttext,which has each embedded newline preceded by a backslash.

而且其可以配合find查找的内容处理,如下:

find .-name server.xml|xargs sed -i '/directory/i       <!--'
find .-name server.xml|xargs sed -i '/pattern="%h/a       -->'

二、在某行(指具体行号)前或后加一行内容

sed -i 'N;4addpdf'a.txt
sed -i 'N;4ieepdf'a.txt 

这里指定的行号是第四行 。

三、删除指定行的上一行或下一行

删除指定文件的上一行
sed -i -e :a -e '$!N;s/.*n(.*directory)/1/;ta'-e 'P;D'server.xml
删除指定文件的下一行
sed -i '/pattern="%/{n;d}'server.xml 

sed -i '3s/aaa/fff/' file --表示针对file文件中的第三行,将其中的aaa替换为fff

sed -i '/xxx/s/aaa/fff/g'file --表示针对文件,找出包含xxx的行,并将其中的aaa替换为fff

sed -i '1s/[#*]/fff/gp'file --表示针对文件第1行,将其中的#号或是*号替换为fff

免责声明:文章转载自《sed入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇外观模式小试sudo漏洞解决方案--源码转rpm包(spec文件编写)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

通过grep,awk,sed的简单应用获取网卡信息。

本文主要通过shell命令来实现获取网卡信息。通过cmd_shell函数可以将运行命令后的输出返回。    int cmd_shell(char *shellcmd, char *outbuffer, int size) { FILE *stream; char buffer[size]; memset(buffer, 0...

shell 常用脚本维护笔记

Centos7.5 IP地址维护 #!/usr/bin/bash IPADDR=$(ifconfig|grep inet|sed '2,$d'|awk '{print $2}') GATEWAY=$(ifconfig|grep inet|sed '2,$d'|awk '{print $2}'|awk -F "." '{print $1"."$2"."$3"...

shell实现trim函数-去除字符串两侧的空格(包括tab,space键)

shell实现trim函数效果去除字符串两侧的空格,以下三个命令等价,都能实现 sed 's/^s*//' totrim.txt |sed 's/s*$//'>trimed.txtsed 's/^s*//;s/s*$//' totrim.txt>trimed.txtsed -e 's/^s*//' -e 's/s*$//' totrim.txt...

sed 命令给指定文件的某行添加特定字符

一、需求:需要给某个机器的某个文件的指定行添加一些 字符 二、处理过程: 1.某行字符较少的话可以使用替换的方法,如下: $ sed -i.bak '10 s#netmask#aaaaaaaaaaaa#' file   表示对第10行 进行替换 2.某行字符太长的话,使用sed 命令可以实现指定行添加一些 字符,如下: $ sed -i.bak '124...

sed的使用

1 SED 手册 中央研究院计算中心ASPAC 计划(刘刚2008年5月7号整理ganghust@gmail.com) aspac@phi.sinica.edu.tw 技术报告: 96005 1996年12月1日Version:1.0 SED 手册..........................................................

《SED 单行脚本快速参考》的 awk 实现

http://linuxtoy.org/archives/sed-awk.html { 撰文/bones7456} sed 和 awk 都是 Linux 下常用的流编辑器,他们各有各的特色,本文并不是要做什么对比,而是权当好玩,把《SED 单行脚本快速参考》这文章,用 awk 做了一遍~ 至于孰好孰坏,那真是很难评论了。一般来说,sed 的命令会更短小一些...