(1)基本介绍

1) 工作流程:
sed每次处理一行内容,处理时,把当前处理的行存储在临时缓存区,称为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,直到内容处理完毕
2)语法格式:

sed [options] 'command' file
选项:
    -n : 取消默认的输出
    -i :inplace,就地编辑
    -r :支持扩展元字符
命令:
    a :在当前行后添加一行或多行
    c :用新文本修改(替换)当前行的文本
    d :删除行
    i :在当前行之前插入文本
    s :用一个字符串替换另一个
        s :替换标志
        g :行内进行全局替换
        i :忽略大小写
    r :从文件中读
    w :将行写入文件
   
支持基本正则表达式:^    $    .    *    []    m\{n\} [^] \< \> ()
支持扩展正则表达式:?    +    {} |    ()
使用扩展正则表达式两种方式:\+  sed -r

(2)sed基本用法

1)打印 p

sed -r "" /etc/passwd
sed -r "p" /etc/passwd  打印两行
sed -rn "p" /etc/passwd   输出两行,使用-n取消默认输出
sed -rn "/root/p" /etc/passwd

2)删除行 d

sed -r "/root/d" /etc/passwd
sed -r "\#root#d" /etc/passwd
sed -r "1,3d" passwd        #删除1到3行
sed -r '3,$d' passwd        #从第三行到最后一行删除
sed -r "/root/,5d" passwd    #匹配root行删到第5行
sed -r "/^root/,+5d" passwd    #匹配root开头的行,下面在删除5行

3)替换字符 s

sed -r "s/root/jack" /etc/passwd  替换一行的前面一个,后面的不替换
sed -r "s/root/jack/g" /etc/passwd  单行匹配全部替换
sed -r "s/ROOT/jack/gi" /etc/passwd 忽略大小写
sed -r 's/(.*)/#&/g' passwd            向所有行前面添加#,&代表查找字符串中匹配到的内容
sed -r 's/(.)(.)(.*)/a\1b\2c\3/g' passwd   \1 \2 \3分别引用前面的()

4)注意事项

# cat a.txt
/etc/abc/456
etc
sed -r "\#/etc/abc/456#d" a.txt   #删除/etc/abc/456这一行,使用#好看一点,需要在\#
sed -r "s#/etc/abc/456#/etc/sda1#" a.txt

5)写文件:w

sed -r '/root/w /tmp/1.log' passwd   从passwd文件中匹配出root的行写入到/tmp/1.log文件中
sed -r '3,$w /tmp/1.log' passwd

6)追加内容:a

sed -r '2a\111111' /etc/hosts       在第二行后追加内容

7)插入内容:i

sed -r '2i\11111' /etc/hosts    在第二行插入内容

8)修改整行:c

sed -r '2c\11111' /etc/hosts  第二行内容修改为11111

9)反向: d

sed -r '3d' /etc/passwd
sed -r '3!d' /etc/passwd    删除除了第三行以外的内容

10)引用外部变量

var=1111
sed -r "3a$var" /etc/passwd    第三行追加变量的值
sed -r "\$a$var" /etc/passwd   最后一行追加变量的值

(3)常见例子
删除注释行及空行:
sed -ri '/^[ \t]*(#|$)/d' 1.log
sed -ri '/^[ \t]*#|^[ \t]*$/d' 1.log
sed -ri '/^[ \t]*$/d;/^[ \t]*#/d' 1.log

修改配置文件:
sed -ri '$a\127.0.0.1 localhost' /etc/hosts    \\最后一行追加
sed -ri '/^SELINUX/cSELINUX=disabled' /etc/sysconfig/selinux
sed -ri '/UseDNS/cUseDNS=no' /etc/ssh/sshd_config
sed -ri  '/GSSAPIAuthentication/cGSSAPIAuthentication no' /etc/ssh/sshd_config

给文件添加注释行:
sed -ri 's/^/#/' passwd
sed -ri 's/^(.*)/#\1/' passwd
sed -r 's/^.*/#&/' passwd            &表示匹配前面查找的内容

(3)三剑客之sed的更多相关文章

  1. 文本处理三剑客之sed命令

    第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...

  2. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  3. (转)不看绝对后悔的Linux三剑客之sed实战精讲

    不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...

  4. shell编程系列13--文本处理三剑客之sed利用sed追加文件内容

    shell编程系列13--文本处理三剑客之sed利用sed追加文件内容 追加用法总结: .a 在匹配行后面追加 .i 在匹配行前面追加 .r 将文件内容追加到匹配行后面 .w 将匹配行写入指定文件 追 ...

  5. shell编程系列12--文本处理三剑客之sed利用sed修改文件内容

    shell编程系列12--文本处理三剑客之sed利用sed修改文件内容 修改命令对照表 编辑命令 1s/old/new/ 替换第1行内容old为new ,10s/old/new/ 替换第1行到10行的 ...

  6. shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容

    shell编程系列11--文本处理三剑客之sed利用sed删除文本中的内容 删除命令对照表 命令 含义 1d 删除第一行内容 ,10d 删除1行到10行的内容 ,+5d 删除10行到16行的内容 /p ...

  7. shell编程系列10--文本处理三剑客之sed利用sed查询特定内容

    shell编程系列10--文本处理三剑客之sed利用sed查询特定内容 利用sed查找文件内容: pattern种类: .8p .,10p .,+5p ./regexp/p .,/regexp/p . ...

  8. shell编程系列9--文本处理三剑客之sed概述及常见用法总结

    shell编程系列9--文本处理三剑客之sed概述及常见用法总结 sed的工作模式:对文本的行数据一行行处理,如下图 sed(stream editor),是流编辑器,依据特定的匹配模式,对文本逐行匹 ...

  9. day14 linux三剑客之sed命令

    day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...

  10. 文本处理的命令,三剑客之sed

    文本处理的命令 1.sort命令 "用于将文件内容加以排序" 参数: -n :按照数值的大小排序 -r :以相反的顺序来排序 -k :以某列进行排序 -t :指定分隔符,默认是以空 ...

随机推荐

  1. ps学习笔记(二)

    1)选择所有图层: Ctrl+Alt+A2)查找层:ctrl+alt+shift+f,需要在层面板输入查找层名,可自动查找层:3)隔离层:可将选择图层,更改为隔离,只对选择的层编辑:注:图层面板中有一 ...

  2. 【bzoj2815】[ZJOI2012]灾难 拓扑排序+倍增LCA

    题目描述(转自洛谷) 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学过生物 ...

  3. 51nod 1680区间求和 (dp+树状数组/线段树)

    不妨考虑已知一个区间[l,r]的k=1.k=2....k=r-l+1这些数的答案ans(只是这一个区间,不包含子区间) 那么如果加入一个新的数字a[i](i = r+1) 则新区间[l, i]的答案为 ...

  4. 【ZJ选讲·压缩】

    给一个由小写字母组成的字符串(len<=50) 我们可以用一种简单的方法来压缩其中的重复信息. 用M,R两个大写字母表示压缩信息 M标记重复串的开始, R表示后面的一段字符串重复从上一个 ...

  5. 解决Vue方法中setTimeout改变变量的值无效

    把data里的变量继承过来重新封装一下 let that = this; this.rightAnswer = false; setTimeout(function() { that.rightAns ...

  6. MySQL的字符集小结

    正确了解MySQL的字符集问题,能够从根本上解决乱码的困扰. 首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对 ...

  7. Codeforces Round #524 (Div. 2) B. Margarite and the best present

    B. Margarite and the best present 题目链接:https://codeforces.com/contest/1080/problem/B 题意: 给出一个数列:an=( ...

  8. SQLNET跟踪tnsping过程

    原文地址:SQLNET跟踪tnsping过程 作者:yingyifeng306 sqlnet是oracle提供的与网络层面交互的一个工具,比如如何解析客户端发起的连接,如何对客户端发起的连接进行辨别, ...

  9. lnmp重置mysql数据库root密码

    第一种方法:用军哥的一键修改LNMP环境下MYSQL数据库密码脚本 一键脚本肯定是非常方便.具体执行以下命令: wget http://soft.vpser.net/lnmp/ext/reset_my ...

  10. webpack3基础知识

    ## 本地化安装webpack ## 1. npm init //npm初始化生成package.json文件 2. npm install --save-dev webpack //安装webpac ...