感谢支持
我们一直在努力

Sed命令的使用详细解释

一:sed命令的简介


sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。


sed命令,sed


二:Sed的用法格式


Sed [options] ‘scripts’ inputfile


sed ‘pattern’ inputfile


pattern:中也可以有sed的子命令command,


另外强大的sed还支持正则表达式,和扩展正则表达式


三:sed命令常用[options]选项


-n选项: quiet,silent,静默模式,不打印模式空间中的内容,而是仅打印和sed命令匹配的内容


suppress automatic printing of pattern space。


比如:sed -n ‘1,2p’ passwd


sed命令,sed


再如Sed ‘1,2p’ /etc/passwd


sed命令,sed


-f:选项 sed -f filename


把sed要处理的命令写到一个文件中,使用-f选项


-i选项:直接对源文件进行操作。


-e选项:sed -e scripts或者expression


说明:-e选项可以支持sed进行多点编辑处理,使用多个scripts或者expression时,之间使用;分号隔开。


比如:


sed命令,sed

四: sed命令的pattern说明


Pattern中的格式:


①addr1 ,addrN/command (ddr1,addrN也可以是模式)


例如:打印 sed.txt文本中的第1行和第2行。


sed命令,sed


②在pattern中相关的子命令command


⑴d:删除指定 的行


例如删除sed.txt 文本中的前两行。


sed命令,sed


⑵p:模式空间中的文本在处理之前,每一次都会先显示


Print the current pattern space


sed命令,sed


⑶a \:在模式匹配到的行后面添加新的内容。


例如:在以#号开头的行的下一行添加两行\n 在行之间换行。


sed命令,sed

⑷i \ :在模式匹配到的行前面添加新的内容。


例如:在以#开头的行的上一行添加一行。


sed命令,sed


⑸!:表示对command的匹配范围取反


例如下面的例子,表示除了以#开通的行外,其他行都在其上面添加一行信息,一定要注意的是!号是对其前面的要匹配的范围取反。


sed命令,sed


再例如显示sed.txt 中前两行


sed命令,sed


⑹ 在数据流重定向中,我们把一个文件追加到另外一个文本中,只能追加到另一个文本的末尾,但是使用sed可以在另外一个文本添加到其他地方。


例如将sed2.txt中的内容追加到sed.txt文本中的第13行后面。


sed命令,sed


另外还可以匹配模式,例如将sed2.txt中的内容追加到sed.txt文本中以#开通的行后面。


sed命令,sed

⑺w:把匹配到的内容写入到某个地方


例如:将sed.txt中以#开通的行 以覆盖的方式写入到/root/sed2.txt文本中。


sed命令,sed


⑻s:s/模式/sting/g [i]: s的使用类似在vim编辑器中的末行模式中的使用。


参数g,利用模式匹配到的内容,用sting替换。i参数在模式匹配的过程中不区分大小写。或者是s@模式@sting/g ,或者是s%模式%sting/g等等具体情况,具体对待吧!!


比如:把sed.txt中开通是?的行,替换成字符串how ate you?


sed命令,sed


⑼&符号的引用功能:&符号可以引用前面匹配到的内容


例如: 将sed.txt中以th开头,后跟两个字符的单词后面添加OO


sed命令,sed


关于引用的另外一个用法:示例同上将sed.txt中以th开头,后跟两个字符的单词后面添加OO


sed命令,sed

⑽ n (N):Read/append the next line of input into the pattern space


例如


sed命令,sed


sed命令,sed

通过上面两个例子的对比我们不难发现:小写字母n的使用方法,n是覆盖方式的输入。


大写N则是以追加的方式输入


sed命令,sed


sed命令,sed


sed命令,sed


n与d一起使用的妙用


sed命令,sed

⑾ h(H)与g(G)的使用方法。


h: Copy pattern space to hold space:将模式空间中的内容复制到保留空间,覆盖方式进行


H: append pattern space to hold space:将模式空间中的内容覆盖到保留空间,追加方式进行


g: Copy hold space to pattern space:将保留空间中的内容复制到模式空间,覆盖方式进行


G: append hold space to pattern space:将保留空间中的内容复制到模式空间,追加方式进行


例如:


sed命令,sed


sed命令,sed


⑿sed 命令中的替换


y/source/dest/


例如:将sed.txt文本中的小写t和h,换成相应的大写T,H。


sed命令,sed


⒀ b:跳转:跳过某些符合的条件


例如


参考以上例子:将sed.txt文本中的小写t和h,换成相应的大写T,H。但是跳过以#号开通的行


sed命令,sed


⒁ :lable 在sed命令处理的过程中做标记(备注:lable可以是自己定义的标记)


这个做标记怎么使用呢?听起来有点迷茫,不过请看下面的里面


还是参考上面的例子,例如在sed.txt文本中将在非#号开通的行中a 换成大写的B,将以#开头的行中的 a 换成大写的A


sed命令,sed

赞(0) 打赏
转载请注明出处:服务器评测 » Sed命令的使用详细解释
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏