Linux sed命令介绍

简介
sed命令应用广泛 , 使用简单 , 是文本流编辑器的利器 , 逐行对文件的内容进行处理处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),可以指定仅仅处理哪些行 。sed处理完成之后把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复, 直到文件末尾 。sed符合条件的处理,不符合条件的不予处理,文件内容并没有改变 , 除非用重定向存储输出 。
一. 简单入门
1. 输出范围行
 

Linux sed命令介绍

文章插图
 
 
参数 -n 这个参数是--quiet或者--silent的意思 。表明忽略执行过程的输出 , 只输出我们的结果即可 。
我们常用的还有另外一个参数:-i 。使用此参数后 , 所有改动将在原文件上执行 。你的输出将覆盖原文件 。非常危险 , 一定要注意 。
范围1,4 表示找到文件中1,2,3,4行的内容 。这个范围的指定很有灵性 , 请看以下示例(请自行替换图中的范围部分) 。
5 选择第5行 。
2,5 选择2到5行 , 共4行 。
1~2 选择奇数行 。
2~2 选择偶数行 。
2,+3 和2,5的效果是一样的 , 共4行 。
2,$ 从第二行到文件结尾 。
 
Linux sed命令介绍

文章插图
 
 
范围的选择还可以使用正则匹配 。
请看下面示例:
/abc/,+3 选择出现abc字样的行 , 以及后面的三行 。 
/^abc/,/xyz / 选择以abc开头的行 , 和出现xyz字样行之间的数据 。
为了直观 , 下面的命令一一对应上面的介绍 , 范围和操作之间是可以有空格的 。
sed -n '5p' test.txt
sed -n '2,5 p' test.txt
sed -n '1~2 p' test.txt
sed -n '2~2 p' test.txt
sed -n '2,+3p' test.txt
sed -n '2,$ p' test.txt
sed -n '/abc/,+3 p' test.txt
sed -n '/^abc/,/xyz/p' test.txt
 
Linux sed命令介绍

文章插图
 
 
Linux sed命令介绍

文章插图
 
 
操作 p表示打印
 
2 . 替换操作
 
Linux sed命令介绍

文章插图
【Linux sed命令介绍】 
 
替换模式的参数有点多 , 但第一部分和第五部分都是可以省略的 , "/"可以用"@"、”#“等符号代替 。替换后会将整个文本输出出来 。前半部分用来匹配一些范围 , 而后半部分执行替换的动作 。
这里的命令是指s 。也就是substitute的意思 。
sed 's/aaa/bbb/' a.txt #替换每一行的第1个aaa为bbb
sed 's/aaa/bbb/g' a.txt #替换每一行的所有aaa为bbb
sed 's/aaa/bbb/2' a.txt #替换每一行的第2个aaa为bbb
sed '1,10s/aaa/bbb/g' #替换第1行到第10行所有的aaa为bbb
sed 's/^[0-9]/(&)/' a.txt #将数字加上一个(), &为匹配到的内容
sed '/sys/,+3 s/a/b/g' file
sed '/^abc/,/xyz/s/a/b/g' file
 
Linux sed命令介绍

文章插图
 
 




    推荐阅读