sed命令的介绍和用法


sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed的功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等sed基本用法sed [option]… ‘script’ inputfile…sed [选项].. ‘脚本这个脚本是sed自身的脚本’ 处理的文件…常用选项:-n 不输出模式空间内容到屏幕,即不自动打印-e 多点编辑-f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本-r 支持使用扩展正则表达式-i.bak 备份文件并原处编辑:直接修改sed -i.bak(自己定义) ‘/^root/aadmin’;真的修改文件并备份原文件script:’地址命令’:地址是对文本中的那个部分进行处理,对那些行进行处理如何进行处理就是根据命令来进行处理的地址定界:(1) 不给地址:对全文进行处理(2) 单地址:#: 指定的行,$:最后一行/pattern/:被此处模式所能够匹配到的每一行(3) 地址范围:#,##,+#/pat1/,/pat2/:只显示中间的部分内容例如:sed -n ‘/^ftp/,/^sa/p’ /etc/passwd#,/pat1/(4) ~:步进1~2 奇数行seq 10 | sed -n ‘1~2p’2~2 偶数行seq 10 | sed -n ‘2~2p’sed -n ‘2p’ /etc/passwd :只打印第2行sed命令不仅是对文本,还可以把一些命令的标准输出作为输入进行处理比如:ifconfig eth0 | sed -n ‘2p’编辑命令:d 删除模式空间匹配的行,并立即启用下一轮循环(sed ‘2d’ /etc/passwd 第二行不显示)p 打印当前模式空间内容,追加到默认输出之后(本身就会打印加上p之后会在打印一次)a []text 在指定行后面追加文本,支持使用n实现多行追加seq 10 | sed ‘axxx’:每一行追加xxx还可以添加换行符:seq 10 | sed ‘axxxntttnzzz’还可以添加换行符:seq 10 | sed ‘2axxxntttnzzz’第二行进行追加i []text 在行前面插入文本:添加斜线表示之后的内容为添加的内容c []text 替换行为单行或多行文本w /path/file 保存模式匹配的行至指定文件r /path/file 读取指定文件的文本至模式空间中匹配到的行后sed -n ‘/^UUID/r /etc/issue’ /etc/fstab:读取文件内容= 为模式空间中的行打印行号! 模式空间中匹配行取反处理sed ” /etc/passwd :什么都不跟相当与显示一下文件修改selinux中配置文件sed -i ‘/^SELINUX=enforcing/cSELINUX=disabled’ /etc/selinux/config禁用SElinuxsed -i ^C/^SELINUX=/cSELINUX=disabled’ /etc/selinux/configs///g:查找替换,分隔符自己指定,可为s@@@,s###替换标记:g,全局替换;i,忽略大小写高级编辑命令h:把模式空间中的内容覆盖至保持空间H:把模式空间中的内容追加至保持空间g:把保持空间中的内容覆盖至模式空间G:把保持空间中的内容追加至模式空间x:把模式空间和保持空间中的内容互换n:覆盖读取匹配到的行的下一行至模式空间N:追加读取匹配到的行的下一行至模式空间d:删除模式空间中的行D:删除多行模式空间中的行在sed语句中强行引用变量”’var_name”’:使用三个’引号在sed语句中可强行引用变量值例:IP=IP[root@centos7 test]#ifconfig ens33 | sed -nr ‘s#.inet (.) net.*#”’$IP”’ 1#p’IP 192.168.0.100示例:seq 1 10 | sed -n ‘n;p’ :取偶数行seq 1 10 | sed ‘n;d’ :取奇数行seq 1 10 | sed ‘1!G;h;$!d’ :逆序显示seq 1 10 | sed ‘$!d’ :取出最后一行seq 1 10 | sed ‘/^$/d;G’ :删除文件中的空白行,而後为所有非空白行添加一个空白行seq 1 10 | sed ‘$!N;$!D’ :显示最后两行seq 1 10 | sed ‘G’ :在原有文件的每行后添加一个空白行sed练习:练习:统计/etc/init.d/functions文件中每个单词出现的次数,并排序(使用grep和sed两个命令进行实现)sed -nr ‘s#[^[:alpha:]]+#n#gp’ /etc/rc.d/init.d/functions | sort |uniq -c |sort -nr grep -Eo “[[:alpha:]]+” /etc/rc.d/init.d/functions | sort |uniq -c | sort -nr练习:取出指定网卡的IP地址ifconfig eth0 |sed -rn ‘2s/(^.inet )(.)( netmask.*$)/2/p’ifconfig eth0|sed -nr ‘2s/.t (.) net.*/1/p’练习:echo /etc/sysconfig/network/ 取出目录名和基名目录名:echo /etc/sysconfig/network/ | sed -nr ‘s#(.开发云主机域名/)([^/].)/?$#1#p’基名: echo /etc/sysconfig/network/ | sed -nr ‘s#(./)([^/].)/?$#2#p’练习:将文本文件的n和n+1行合并为一行n为奇数行:seq 1 10 | sed -n ‘N;s#n##p’n为偶数行:seq 1 10 | sed -n ‘1d;N;s#n##p’

相关推荐: Xvnc 支持libwrap控制单个IP登录VNC 实现

0, download tightvnc-server wget http://www.tightvnc.com/download/1.3.10/tightvnc-1.3.10_unixsrc.tar.gz1, 修改配置文件,支持libwrap 库 cd /r…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/09 22:29
下一篇 04/09 22:29