当前位置: 首页 > Linux

sed_0

时间:2023-04-06 18:29:08 Linux

的基本用法sed的工作流程sed:StreamEditor,流编辑器,默认不对原始文件做任何处理,只对模式空间中的数据进行处理,处理后将模式空间打印到屏幕上。sed逐行将文件读入模式空间(内存),进行模式匹配,如果与模式匹配则进行编辑(取决于给出的编辑命令),然后进行下一行操作。sed命令格式sed[options]'AddressCommand'file...-n:静默模式,默认不再显示模式空间的内容-i:直接修改原文件-eSCRIPT-eSCRIPT:多个脚本即可同时执行-f/PATH/TO/SED_SCRIPTsed-f/path/to/脚本文件执行文件文件中脚本中的每条命令-r:表示使用扩展正则表达式地址:1、StratLine、EndLine比如1,100(第1行到第100行)$:表示最后一行2,/RegExp(正则表达式)/比如/^root/3,/pattern1/,/pattern2/从第1行匹配到pattern1到pattern匹配的第一行结束2,之间的所有行4,LineNumber:指定某行5,StarLine,+N从startline开始,向后N行Command:d:删除满足条件的行p:显示满足条件的行a\string:在指定行后添加新行,内容为字符串,\n可用于换行i\string:在指定行前添加新行,内容为字符串rFILE:将指定文件的内容添加到满足条件的行wFILE:将指定范围的内容保存到文件中指定的s/pattern/string/modifier:findandreplace,将pattern匹配的内容替换为string(默认只替换每行第一次匹配到pattern的字符串)addmodifierg:globalreplacei:Ignorecharactercases///:s###:s@@@,反向引用也是支持\(\),\1,\2&:引号模式匹配整个字符串sed's#l..e#&r#g'sed.txtsed's#\(l..e\)#\1r#g'sed.txtsed's#l\(..e\)#L\1#g'sed。txtnanosed.txthello,likehi,mylovesed做法:1.删除/etc/grub.conf文件中行首的空白字符;2、将/etc/inittab文件中的“id:3:initdefault:”行替换为5;3、删除/etc/inittab文件中的空行;4、删除/etc/inittab文件开头的#;5、删除文件开头的#和后面的空白字符#号后必须有一个空白字符;6.删除行首的空格和#后跟一个文件中的空格和#7.取出文件路径的目录名basename1,sed-r's@^[[:space:]]+@@g'/etc/grub.conf2,sed's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g??'3.sed'/^$/d'/etc/inittab4.sed's@^#@@g'/etc/inittab5.sed-r's@^#[[:space:]]+@@g'/etc/inittab6、sed-r's@^[[:space:]]+#@@g'/etc/inittabsed's@^[[:space:]]\{1,\}#@@g'/etc/inittab7.echo"/etc/rc.d"|sed-r's@^(/.*/)[^/]+/?@\1@g'echo"/etc/rc.d"|sed-r's@^/.*/([^/]+)/?@\1@g'