今天继续给大家介绍Linux基础知识,本文主要内容是Linux四剑客——sed。
一、sed命令使用和参数
sed是一种流编辑器,可以对文本进行增删查改等操作,我们常使用sed对文件的指定内容进行批量替换。在sed命令的使用中,要特别注意的是sed拥有缓冲区,因此sed对文件的修改实际上是对缓冲区中的文件副本的修改,文件本身并没有改变,除非显式的将缓冲区中的内容保存到文件中。sed比较类似于offfice的保存机制。
sed命令常用参数如下:
-f 后面跟一个文本文件,表示将文本文件的内容作为sed命令的后续参数和对象
-i 表示直接修改文件内容,sed加上此参数后对文件的修改会生效
-r 表示支持扩展的正则表达式
二、sed命令使用示例
为了使大家对sed命令的使用更加熟练,在这里我列举几个sed命令示例供大家参考,当然,sed的命令远不止这些,这里只是列举了几个常见的sed命令,其他的sed命令大家如果感兴趣也可以自行学习。
(一)sed替换
如果在sed的字符串的开头为s,则sed起到的作用是进行替换,sed替换命令大致格式为:
sed 's/123/321/' file
在上述命令中,s是sed的子命令,表示sed要执行的操作是替换,三个斜杠是定界符,第一个斜杠前面是sed的子命令,第一个斜杠和第二个斜杠之间的是要被替换的字符串,第二个斜杠和第三个斜杠之间的是要替换成的字符串,在最后的斜杠后面还可以跟g表示全面替换,如果跟Ng(N是一个正整数),就表示从每行的第N个开始进行替换。最后的斜杠后面还可以跟p表示打印发生替换的行,但是该参数通常结合-n参数运行。sed命令的定界符除了斜杠以外,还可以使用“|”、“#”或者“:”。如果在定界符之间需要查找或者替换的字符串含有定界符本身,则需要事项反斜杠对定界符进行转义。
sed的替换命令如下所示:
sed 's/boy/girl/' file
sed -n 's/boy/girl/p' file
sed 's/boy/girl/2g' file
上述三条命令,都表示将file文本中的boy替换为girl,第一条命令表示把每行的第一个boy替换为girl,第二条命令表示只打印发生替换的行,第三条命令表示从每行的第二个boy开始进行替换。
上述三条命令执行效果如下:

sed的替换还可以结合以匹配字符串标记&,从而得到更加绚丽的效果,已匹配字符串使用命令如下:
sed 's/\w\+/[&]/g' file
上述命令效果如下:

(二)sed删除
如果在sed命令的最后出现d,则此时sed命令的作用是删除指定的字符串,sed删除的命令示例如下:
sed '/boy/d' file
sed '/^boy/d' file
sed '/^$/d' file
sed '4d' file
sed '2,5d' file
sed '3,&d' file
上述五条命令效果为:①删除掉文本中的boy②删除以boy为开头的行③删除所有的空行④删除掉第四行⑤删除掉2到5行⑥删除掉第三行以及其后面的所有行。
上述命令执行效果如下所示:

(三)sed写入
如果在sed中出现了a或者i,则表示在匹配到的字符串位置插入新的内容,如果是a,则表示在该处的上面一行加入,如果是i,则表示在该处的下面一行插入。sed的插入命令示例如下:
sed '/^boy/a\insert!' file
sed '3a\insert!' file
sed '/boy/i\insert!' file
上述三条命令,都表示插入一行insert!,但是插入的位置有所不同,第一条表示在以boy为开头的行下方插入该行,第二条表示在第三行下面插入该行,第三条表示在有boy的行上面插入该行。
上述三条命令效果如下所示:

原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
本文详细介绍了Linux中的流编辑器sed,包括其基本使用、参数、替换、删除和插入等操作。sed可以对文本进行增删查改,如批量替换字符串、删除特定行、在指定位置插入内容等。示例中演示了如何用sed进行替换、删除和插入操作,并展示了命令执行效果。
238

被折叠的 条评论
为什么被折叠?



