- sed:数据流编辑器
- sed基本用法
- sed:Stream EDitor
- sed: 行编辑器[全屏编辑器:vi]
- sed的内存空间称为模式空间:
- 默认不编辑源文件,
- sed [options]'AddressCommand' file ......
- -n:只打印符合条件的行
- -i :直接修改源文件
- -e SCRIPT -e SCRIPT:可以同时支持多个脚本
- -f /PATH/TO/SED_SCRIPT
- sed -f /path/to /scripts file
- -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 :
- d:删除符合条件的行:sed '1,2d' /etc/fstab 删除第一行,第二行,,,,sed '/oot/d' /etc/fstab 删除中包含oot的行
- sed'1,+2d' /etc/fstab 删除前三行
- p:显示符合条件的行;sed '/^\//p'显示以/开头的行
- a:\string :在指定的行后面追加新的行,内容为string
- \n :可以换行
- i:\string: 在指定的行前面追加新行,内容为string
- r FILE:将指定的文件的内容添加至符合条件的行处。 sed'2r /etc/issue' /etc/fstab 将/etc/issue文件显示在/etc/fstab 后面的第二行
- w FILE;将地址指定范围内的行另存至指定文件中
- 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练习题:
- 1、删除/etc/grub.conf文件中行首的空白符;
- 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
- 3、删除/etc/inittab文件中的空白行;
- sed '/^$/d' /etc/inittab
- 4、删除/etc/inittab文件中开头的#号;
- sed 's/^#//p' /etc/inittab
- 5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
- sed 's/^#[[:space:]]\{1,\}//p' /etc/inittab
- 6、删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#
- sed 's/^[[:space:]]\{1,\}#//p' /etc/inittab
- sed -r 's/^[[:space:]]+#//g' /etc/inittab
- 7、取出一个文件路径的目录名称;
- echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g'
- 8、取出一个文件路径的基名(也就是目录名称后面的)
- echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'
转载于:https://blog.51cto.com/lzysg172/1149247