sed文本处理工具

格式1:前置命令 |sed [选项] '编辑指令' 格式2:sed [选项] '编辑指令' 文件....

常用命令选项: -n:屏蔽默认输出(全部文本) -i:直接修改文件内容 -r:启用扩展的正则表达式,若与其他选项一起使用, 应作为首个选项。 -{}:可组合多个命令,以分号分隔。

处理动作: p:打印行 d:删除行 s:字符串替换
i:行前插入文本 a:行后插入文本 c:替换当前行

sed 选项  "/正则/"  文件...  

例:sed -n "/^root/p" /etc/passwd

sed -n  '2,4p' /etc/passwd 输出第2-4行

sed -n  '1,4d' /etc/passwd 删除第1-4行

sed -n  'p;n' /etc/passwd 输出基数行

sed -n  'n;p' /etc/passwd 输出偶数行

sed -n  '2,$p' /etc/passwd 输出第2到最后一行

sed -n  '$=' /etc/passwd  输出文本的行数

sed -n  '/root/!p' /etc/passwd 删除不包括root的行

sed -n  '$d' /etc/passwd 删除文件最后一行

sed -n  's/root/abc' /etc/passwd 替换所有行中的第一个root

sed -n  's/root/abc/g' /etc/passwd 替换所有行中的root

sed -n  '3s/root/abc/2' /etc/passwd 将第三行内的第二个root替换为abc

sed -n  's/root//g'  /etc/passwd 将文中的root全部替换为空

sed -n  '1,3s/^#//' /etc/initta  将第1到3行的注释去掉

sed -n  '5,9s/^/#/' /etc/initta   将5-9行添加注释

sed -n  's/^(.)(.*)(.)/\3\2\1/'  /etc/passwd 将第一个字符与最后一个字符互换位置

sed -n  's/[0-9]//g;s/^()+//' /etc/passwd 删除所有的数字和行首的空格

sed -n  's/[A-Z]/(&)/g' /etc/passwd 为每个大写字母添加括号

sed -n  '/^id:/s/3/5/' /etc/inittab   修改默认远程级别

sed -n  '/^IPADDR/s/192.168.4.4/172.168.16.4/' /etc/sysconfig/...  将前面ip修改为172.168.16.4

sed -n  's#/var/www/html#/opt/wwwroot#' /etc/httpd/conf/httpd.conf 将/var/www/html替换为/opt/wwwroot

sed -n  '2ixx' /etc/passwd 在第2行前面插入xx

sed -n  '2axx' /etc/passwd 在第2行后面插入xx

sed -n  '2cxx' /etc/passwd 将第2行全部内容替换为xx 

基本动作: r:读取文件 w:保存到文件 例:sed -i '2r m.txt' /etc/passwd 在第2行下方插入m.txt文件内容

sed -i '1,2w c.txt' /etc/passwd 将1-2行保存到c.txt文件里 

H:追加 复制
h:覆盖 复制 G:追加 粘贴 g:覆盖 粘贴 例:sed -i '1,3H;$G' /etc/passwd 将第1-3行复制到文本末行

sed -i '1h;1d;$G' /etc/passwd 将第1行剪切到文本末行

sed -i '1h;2H;1,2d;$G' /etc/passwd 将第1-2行剪切到文本末行