shell脚本中sed

什么是Sed
sed(stream editor)是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。
sed特点:
1、可以编辑一个或多个文件
2、简化对文件的反复操作
3、由于一次处理一行,读非常大的文件不会出问题,如果全部读取可能会内存溢出或处理速度非常慢。
指令形式sed [options] 'command' file(s)

 sed 's/test/mytest/' sed.txt

脚本文件形式sed [options] -f scriptfile file(s)

 sed -f cmd.sed test.txt

常用选项
-e command, --expression=command
允许执行多条命令编辑。
-n, --quiet, --silent
取消默认输出。
-f, --filer=script-file
引导sed脚本文件名
-i 直接修改读取的档案内容,而不是由屏幕输出
--help display this help and exit
显示帮助信息并退出
--version output version information and exit
显示sed版本信息并退出
Sed实例——多命令编辑e命令

sed -e '1,2d' -e 's/test/check/' sed.txt
-e选项允许在同一行里执行多条命令。
第一条命令删除12行,第二条命令用check替换test。

元字符集
在这里插入图片描述
Sed的基本命令
a\ 在当前行后面加入一行文本。 append
c\ 用新的文本改变本行的文本。 change
d 从模式空间(Pattern space)删除行。 delete
i\ 在当前行上面插入文本。 insert
l 列出非打印字符。 list
p打印模板块的行。 print
q 退出Sed。 quit
r file从file中读行。 read
w file写并追加模板块到file末尾。 write
! 表示后面的命令对所有没有被选定的行发生作用。
y 表示把一个字符转换为另外的字符
= 打印当前行号码。
s/re/string用string字符串替换正则表达式re匹配的字符串。
首先创建一个test.txt
请添加图片描述
Sed实例——p(显示),=(打印行号)
请添加图片描述
请添加图片描述Sed实例——匹配元字符
sed.txt
在这里插入图片描述

sed -n ‘/A\{4,\}/ p’ sed.txt
sed -n ‘/.test/p’ sed.txt
sed -n ‘/ *test/p’ sed.txt

在这里插入图片描述
Sed实例——a(附加文本) ,i(插入文本)
请添加图片描述
请添加图片描述
Sed实例——c(修改文本), d(删除文本)
请添加图片描述
请添加图片描述
Sed实例——q(退出),l(列出非打印字符)
请添加图片描述
Sed实例——y(替换对应的字符),!(取反命令)
sed ‘y/abcd/ABCD/’ sed.txt
第一个字符串(abcd)必须和第二个字符串(ABCD)长度相等
请添加图片描述
Sed实例——w命令
请添加图片描述
请添加图片描述

w命令和重定向>的作用是不同的:
   w是将匹配的行写入文件中
   >是将打印到屏幕上的内容写到文件中

Sed实例——r命令
请添加图片描述
请添加图片描述
sed '/test/r read.txt' test.txt将read.txt里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
Sed实例——替换命令s
请添加图片描述
请添加图片描述

在整行范围内把test替换为mytest。
如果没有g标记,则只有每行第一个匹配的test被替换成mytest.

如果在本身需要替换的文本当中包含了斜杠,可以把斜杠换成冒号,星号都是可以的。
比如:sed ‘s/test/mytest/g’sed.txt
可以换成sed ‘s:test:mytest:g’ sed.txt
或者换成sed ‘s*test*mytest*g’ sed.txt
Sed实例——&和\(……\)
&符号表示替换字符串中被找到的部份。
sed.txt
在这里插入图片描述
sed ‘s/^test1/&qq&qq/’ sed.txt
在这里插入图片描述
love被标记为1,abl被标记为2,所有loveable会被替换成lovers ablity,最多存9个
sed -n ‘s:(love)(abl)e:\1rs \2ity:p’ sed.txt
在这里插入图片描述
下面内容
原文链接:https://blog.csdn.net/drbing/article/details/52464403
sed中y命令与s命令的区别
首先这两个命令都可以用作替换,但替换时还是有区别的
(1)y一般是行级别的替换,s一般是列级别替换(当然也可以转换成行级);
(2)s替换的是整体,y替换的是每一字母对应的单个字母
例:
1、sed ‘s/dog/cat/’ data 把data中的所有行中的第一次出现dog的替换成cat,(注意:如果cat/后没有出现其他形式,则默认时第一次出现的位置)
2、sed ‘1,3y/abc/ABC/’ data 把data中的第一行至第三行中的a替换成A,b替换成B,c替换成C
3、sed ‘2,${s/dog/cat/1}’ data 把data中的第二行至最后一行的第一次出现dog的替换成cat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值