- sed:数据流编辑器
- sed基本用法
- sed:StreamEDitor
- sed:行编辑器[全屏编辑器:vi]
- sed的内存空间称为模式空间:
- 默认不编辑源文件,
- sed[options]'AddressCommand'file......
- -n:只打印符合条件的行
- -eSCRIPT-eSCRIPT:可以同时支持多个脚本
- -f/PATH/TO/SED_SCRIPT
- sed-f/path/to/scriptsfile
- -r:表示使用扩展正则表达式
- Address:
- 1.StartLine,EndLine(起始行,结束行)中间用,(逗号)隔开
- 比如1,100从第一行到第一百行
- $:最后一行。$-1倒数第二行
- 2./RegExp/这个模式就是正则表达式
- /^root/表示以root字符串开头的行
- 3./pattern1/,/pattern2/
- 第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
- 4.LineNumber
- 指定的行
- 5.StartLine,+N
- 从startLine开始,向后的N行
- Command:
- sed'1,+2d'/etc/fstab删除前三行
- a:\string:在指定的行后面追加新的行,内容为string
- \n:可以换行
- i:\string:在指定的行前面追加新行,内容为string
- wFILE;将地址指定范围内的行另存至指定文件中
- s/pattern/string/:查找并替换,默认只替换每一行中第一次被模式匹配到的串例如:sed's/oot/OOT/'/etc/fstab
- 加修饰符:
- g:全局替换
- i:忽略字符大小写
- s///:s###,s@@@等等,都能用。
- &:引用模式匹配的整个串例子:sed's#l..e#&r#g'sed.txt把文件中l..e替换成l..er
- sed练习题:
- sed's/^[[:space:]]+//g'/etc/inittab
- 2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
- sed-n's/\(id:\)[0-9]\(:initdefault\)/\15\2/p'/etc/inittab
- sed'/^$/d'/etc/inittab
- sed's/^#//p'/etc/inittab
- sed's/^#[[:space:]]\{1,\}//p'/etc/inittab
- sed's/^[[:space:]]\{1,\}#//p'/etc/inittab
- sed-r's/^[[:space:]]+#//g'/etc/inittab
- echo"/etc/rc.d/"|sed-r's@^(/.*/)[^/]+/?@\1@g'
- echo"/etc/rc.d/"|sed-r's@^/.*/([^/]+)/?@\1@g'