常用命令——sed详解

以下内容参考:http://qifuguang.me/2015/09/21/sed命令详解/

sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。

sed命令常用的使用方法为:

sed [option] 'command' input_file

常见的option选项:

-n 使用安静(silent)模式(想不通为什么不是-s)。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来;
-e 直接在指令列模式上进行 sed 的动作编辑;
-f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行filename内的sed命令;
-r 让sed命令支持扩展的正则表达式(默认是基础正则表达式);
-i 直接修改读取的文件内容,而不是由屏幕输出。

 

常用的命令:

a : append即追加字符串, a 的后面跟上字符串s(多行字符串可以用n分隔),则会在当前选择的行的后面都加上字符串s;

c : 取代/替换字符串,c 后面跟上字符串s(多行字符串可以用n分隔),则会将当前选中的行替换成字符串s;

d: delete即删除,该命令会将当前选中的行删除;

i : insert即插入字符串,i 后面跟上字符串s(多行字符串可以用n分隔),则会在当前选中的行的前面都插入字符串s;

p: print即打印,该命令会打印当前选择的行到屏幕上;

s: 替换,通常s命令的用法是这样的:1,2s/old/new/g,将old字符串替换成new字符串;其中的g 表示global全局替换,如果没有global的话,只会替换每一行中的第一个匹配的内容;

=: 显示文件行号 

 

在sed 命令中的定位问题:

定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。

如: 3,表示第3行, 1,5 表示第1-5行, $ 表示最后一行;

/sb/ 表示包含sb的行, /sb/, /2b/ 表示包含 sb至包含 2b的行;

/^ha.*day$/  表示以ha开头,以day结尾的行

s/(.*)line$/1/g  表示:()包裹的内容表示正则表达式的第n部分,序号从1开始计算。本例中只有一个()所以(.*)表示正则表达式的第一部分,这部分匹配任意字符串,所以(.*)line$匹配的就是以line结尾的任何行。用1表示匹配到的第一部分,同样2表示第二部分,3表示第三部分,可以依次这样引用。   所以,它的意思是把每一行的line删除掉。

 

举例使用:

sed '1a add one' my.txt
sed '/sb/c  2d' my.txt

sed -n '1,4p' my.txt    #显示第1-4行;
sed 's/sb/2b/g' my.txt     #替换;
sed '1,5d' my.txt            #删除;

 

另外,看一个表格: http://blog.csdn.net/a130098300/article/details/54912388

image

原文链接: https://www.cnblogs.com/yinheyi/p/6653592.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    常用命令——sed详解

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/395390

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月4日 上午9:49
下一篇 2023年4月4日 上午9:49

相关推荐