sed(意为流编辑器,源自英语“stream editor”的缩写)是Unix常见的命令行程序。sed用来把文档或字符串里面的文字经过一系列编辑命令转换为另一种格式输出。sed通常用来匹配一个或多个正则表达式的文本进行处理。
分号(;)可以用作分隔命令的指示符。尽管sed脚本固有的很多限制,一连串的sed指令加起来可以编程像 仓库番、快打砖块、甚至俄罗斯方块等电脑游戏的复杂程序。
sed : Stream Editor(流编辑器)的用法
sed默认情况下不对原文件做处理.
sed [options] '[Address]Command' file ...
Options:
-n, --quiet, --silent : 静默模式,不再自动输出模式空间里的内容,而只会显示命
令-p要求显示的内容.
-i : 直接修改原文件.
-e script : 可以同时执行多个脚本
-f ed-script-file : 从脚本文件中读取编辑命令,当有多个命令需要执行时,这个很有用.
-r : 使用扩展正则表达式
Address:
1.StartLine,Endline 比如1,100
2./RegExp/ 比如 sed "/^root/d" /etc/passwd (这里的双斜线//不能少)
3./pattern1/,/pattern2/ # 第一次被pattern1匹配到的行开始到第一次被pattern2
匹配到的行结束
4. LineNumber # 精确匹配指定的行
5.$ : 匹配最后一行
6.StartLine,+N # 从开始行,向后的N行.
7.! -->取反 示例: /used/ !s/new/used/g 将没有used的其它行的new改成used
Command:
d : 删除. 比如: sed '1,2d' /etc/fstab
p : 打印,显示符合条件的行.
a \string : 在指定的行后面追加新行,内容为string
i \string: 在指定的行前而插入新行,内容为string
r filename:(read text) :在指定的行后添加入文件内容
R filename:(read lines) : 在指定的行后添加入文件的一行内容.
w filename
Write the current pattern space to filename. 例如 sed "/oot/w /tmp/oot.txt" /etc/fstab
W filename
Write the first line of the current pattern space to filename. This is a GNU exten‐
sion.
s/pattern/string/修饰符 :(查找并替换,默认只替换每行中第一次被模式匹配到的
pattern可使用正则)
修饰符:
g: 全局替换
i: 忽略大小写
数字: 如1表示仅替换第1个