sed(stream editor)是流编辑器。
Sed软件有两个内置的存储空间:
- 模式空间(pattern space):是sed软件从文本读取一行文本然后存入的缓冲区(这个缓冲区是在内存中的),然后使用sed命令操作模式空间的内容。
- 保持空间(hold space):是sed软件另外一个缓冲区,用来存放临时数据,也是在内存中,但是模式空间和保持空间的用途是不一样的。Sed可以交换保持空间和模式空间的数据,但是不能在保持空间上执行普通的sed命令,也就是说我们可以在保持空间存储数据。
调用sed命令有两种方式
- sed [options] '[Address]command' file(s)
- sed [options] -f scriptfile file(s)
选项
- -e command,--expression=command允许多台编辑。
- -h,--help打印帮助,并显示bug列表的地址。
- -n,--quiet,--silent取消默认输出。
- -f,--filer=script-file引导sed脚本文件名。
- -V,--version打印版本和版权信息。
- -i,改变文件执行的结果(sed默认是不改变文件)
- -r,扩展正则表达
Address:
1、Startline,Endline
- 比如1,100
- $:最后一行
2、/RegExp/
- /^root/
3、/pattern1/,/pattern2/
- 第一次被pattern1匹配到的行开始,至第一次被 pattern2匹配到的行结束,这中间的所有行
4、LineNumber
- 指定的行
5、Startline,+N
- 从Startlin开始,向后的N行
COMMAND:
- d 删除符合条件的行
- p 打印符合条件的行
- a \String:在指定的行后面追加新行
- \n:可以用于换行
- i \String:在指定的行前面追加新行
- r file:将指定的文件的内容添加至符合条件的行处
- #将文件word读进来,放在匹配到abc行的后面
- w file:将地址指定的范围内的行另存至指定的文件中
- #会覆盖原有文件内容
- s///:查找的并替换,默认只替换每行中第一交被匹配到的字符串
- s/pattern/string/修饰符:查找的并替换,默认只替换每行中第一交被匹配到的字符串
\(\),\1,\2 后向引用 - s///g 全局替换,i 忽略字符大小写
元字符集
- ^行首锚定
- 打印第一个字母是a的行,-n表示取消默认输出
- $行尾锁定
- 打印以字母a结尾的行
- .匹配一个非换行符的字符
- *匹配前面的表达式零次或多次
- +匹配前面的子表达式一次或多次
- ?匹配前面的子表达式一次或零次
- []匹配一个指定范围内的字符
- [^]匹配一个不在指定范围内的字符
- \(..\)保存匹配的字符
- &;保存搜索字符用来替换其他字符
- \<或\b:其后面的任意字符必须作为单词首部出现,例:/\<love/
- \>或\b:其后面的任意字符必须作为单词尾部出现,例:/love\>/
-
x\{m\}重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。
-
x\{m,\}重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。
-
x\{m,n\}重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。
- \w,匹配字母下划线数字
- \W匹配非字母下划线数字
其它示例
1、取出当前路径的上级目录
2、给每个单词加上[]
3、将aaa BBB顺序更换