sed

sed

sed处理流程
  1. 读入新的一行内容到缓存空间(模式空间);
  2. 从指定的操作指令中取出第一条指令,判断是否匹配pattern;
  3. 如果不匹配,则忽略后续的编辑命令,回到第2步继续取出下一条指令;
  4. 如果匹配,则针对缓存的行执行后续的编辑命令;完成后,回到第2步继续取出下一条指令;
  5. 当所有指令都应用之后,输出缓存行的内容;回到第1步继续读入下一行内容;
  6. 当所有行都处理完之后,结束;
sed命令参数
  • s 替换
  • p 打印
  • g 全局
  • -n 抑制默认输出
  • a 追加
  • c 行替换
  • d 删除
  • i 插入
  • r 读文件
  • w 写文件
实例
替换
  • -s 同时替换不同的字符串

-

[root@server6 ~]# sed 's/root/ROOT/;s/:/;/' passwd 
ROOT;x:0:0:root:/root:/bin/bash
bin;x:1:1:bin:/bin:/sbin/nologin
daemon;x:2:2:daemon:/sbin:/sbin/nologin
adm;x:3:4:adm:/var/adm:/sbin/nologin
lp;x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync;x:5:0:sync:/sbin:/bin/sync
shutdown;x:6:0:shutdown:/sbin:/sbin/shutdown
halt;x:7:0:halt:/sbin:/sbin/halt
mail;x:8:12:mail:/var/spool/mail:/sbin/nologin

-

[root@server6 ~]# sed 's/root/ROOT/g;s/:/;/g' passwd 
ROOT;x;0;0;ROOT;/ROOT;/bin/bash
bin;x;1;1;bin;/bin;/sbin/nologin
daemon;x;2;2;daemon;/sbin;/sbin/nologin
adm;x;3;4;adm;/var/adm;/sbin/nologin
lp;x;4;7;lp;/var/spool/lpd;/sbin/nologin
sync;x;5;0;sync;/sbin;/bin/sync
shutdown;x;6;0;shutdown;/sbin;/sbin/shutdown
halt;x;7;0;halt;/sbin;/sbin/halt
mail;x;8;12;mail;/var/spool/mail;/sbin/nologin

-

[root@server6 ~]# sed -n 's/root/ROOT/p' passwd 
ROOT:x:0:0:root:/root:/bin/bash
[root@server6 ~]# sed -n 's/root/ROOT/gp' passwd 
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
[root@server6 ~]# sed -n 's/root/ROOT/pg' passwd 
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
-s空格和Tab和空行
  • 源文本

-

假设[ ]代表一个空格
假设[\t]代表一个Tab
[root@server6 ~]# cat index.html 
        "meizhiyuan"    : 789779,
        "coffe"         : 2378263,
        "wanghaha"      : 239274,
事实上,肉眼凡胎看不出哪个是空格,哪个是Tab,转换为真实格式
[][][][][\t]"meizhiyuan"[\t]:[]789779,
[\t]"coffe"[][\t]:[]2378263,
[][][][][\t]"wanghaha"[][][][][][]:[]239274,
  • 删除行首空格

-

[root@server6 ~]# sed 's/^ //g' index.html 
        "meizhiyuan"    : 789779,
        "coffe"         : 2378263,
        "wanghaha"      : 239274,
  • 去除所有空格

-

[root@server6 ~]# sed 's/ //g' index.html 
        "meizhiyuan"    :789779,
        "coffe" :2378263,
        "wanghaha":239274,
  • 去除所有tab

-

[root@server6 ~]# sed 's/[\t]//g' index.html 
    "meizhiyuan": 789779,
"coffe" : 2378263,
    "wanghaha"      : 239274,
  • 去除所有的空格和Tab

-

[root@server6 ~]# sed 's/[[:space:]]//g' index.html 
"meizhiyuan":789779,
"coffe":2378263,
"wanghaha":239274,
[root@server6 ~]# sed 's/[ ]*[\t]*//g' index.html 
"meizhiyuan":789779,
"coffe":2378263,
"wanghaha":239274,
  • 删除空行

-

[root@server6 ~]# cat index.html 
        "meizhiyuan"    : 789779,


        "coffe"         : 2378263,

        "wanghaha"      : 239274,
[root@server6 ~]# sed '/^$/d' index.html 
        "meizhiyuan"    : 789779,
        "coffe"         : 2378263,
        "wanghaha"      : 239274,
-d 删除
  • 原文本

-

[root@server6 ~]# cat  index.html 
        "meizhiyuan"    : 789779,
        "coffe"         : 2378263,
        "wanghaha"      : 239274,
  • 删除最后一行

-

[root@server6 ~]# sed '$d' index.html 
        "meizhiyuan"    : 789779,
        "coffe"         : 2378263,
  • 删除第一行

-

[root@server6 ~]# sed '1d' index.html 
        "coffe"         : 2378263,
        "wanghaha"      : 239274,
  • 删除第二行

-

[root@server6 ~]# sed '2d' index.html 
        "meizhiyuan"    : 789779,
        "wanghaha"      : 239274,
  • 删除包含‘meizhi’所在行

-

[root@server6 ~]# sed '/meizhi/d' index.html 
        "coffe"         : 2378263,
        "wanghaha"      : 239274,
  • 删除2到最后一行

-

[root@server6 ~]# sed -e '2,$d' index.html 
        "meizhiyuan"    : 789779,
= l p

-

[root@server6 ~]# sed '=' index.html 
1
        "meizhiyuan"    : 789779,
2
        "coffe"         : 2378263,
3
        "wanghaha"      : 239274,

-

[root@server6 ~]# sed 'l' index.html 
    \t"meizhiyuan"\t: 789779,$
        "meizhiyuan"    : 789779,
\t"coffe" \t: 2378263,$
        "coffe"         : 2378263,
    \t"wanghaha"      : 239274,$
        "wanghaha"      : 239274,

-

[root@server6 ~]# sed 'p' index.html 
        "meizhiyuan"    : 789779,
        "meizhiyuan"    : 789779,
        "coffe"         : 2378263,
        "coffe"         : 2378263,
        "wanghaha"      : 239274,
        "wanghaha"      : 239274,
添加
  • 原文件

-

[root@server6 ~]# cat index.html 
        "meizhiyuan"    : 789779,
        "coffe"         : 2378263,
        "wanghaha"      : 239274,
  • 行首添加

-

[root@server6 ~]# sed 's/^/head&/g' index.html 
head            "meizhiyuan"    : 789779,
head    "coffe"         : 2378263,
head            "wanghaha"      : 239274,
  • 行尾添加

-

[root@server6 ~]# sed 's/$/&tail/g' index.html 
        "meizhiyuan"    : 789779,tail
        "coffe"         : 2378263,tail
        "w

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值