sed [-hnV]  [-e<script>][-f<script文件>]    [文本文件]

参数说明:

  -e<script>或--expression=<script>   以选项中指定的script来处理输入的文本文件。
  -f<script文件>或--file=<script文件>   以选项中指定的script文件来处理输入的文本文件。
  -h或--help               显示帮助。
  -n或--quiet或--silent         仅显示script处理后的结果。
  -V或--version            显示版本信息。
动作说明:

  a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
  d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
  i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!如 1,2s/old/new/g

  w: 用来将文本中指定行的内容写入文件中,此命令的基本格式如: [address]w filename

  y: 转换命令是唯一可以处理单个字符的 sed 脚本命令,其基本格式如下:[address]y/inchars/outchars/

  q: 是使 sed 命令在第一次匹配任务结束后,退出 sed 程序

一.a用法示例:

1.第三行加你要的内容 

[root@localhost tmp]# cat data.txt
1
2
3
4
5

[root@localhost tmp]# sed '3a add word' data.txt
1
2
3
add word
4
5

2.末尾加

[root@www ~]# sed -i '$a # This is a test' regular_express.txt
[root@www ~]# cat regular_express.txt
runoob!
google!
taobao!
facebook!
zhihu-
weibo-
# This is a test

3.匹配关键字后再下一行加内容

[root@localhost tmp]# cat test.txt
chen
ling
shuiqing

[root@localhost tmp]# sed '/chen/a add me' test.txt
chen
add me
ling
shuiqing

二、c用法

1.替换第三行

[root@localhost tmp]# sed '3c change me' data.txt
1
2
change me
4
5

2.末尾替换

[root@localhost tmp]# sed -r '$c change me' data.txt
1
2
3
4
5
change me

3.匹配关键字替换整行
[root@localhost tmp]# sed -r '/4/c change me' data.txt
1
2
3
change me
5

三、d用法

1.删除第1,2行

[root@localhost tmp]# sed '1,2d' data.txt
3
4
5

2.匹配关键字删除

[root@localhost tmp]# sed '/3/d' data.txt
1
2
4
5

四、i用法

1.第二行上面加内容

[root@localhost tmp]# sed '2i add work' data.txt
1
add work
2
3
4
5

2.匹配关键字的上以上加内容

[root@localhost tmp]# sed '/3/i add work' data.txt
1
2
add work
3
4
5

五、p用法

1.匹配关键字打印出来,在遍历整个

[root@localhost tmp]# sed '/1/p' data.txt
1
1
2
3
4
5

2.匹配关键字打印出来,加-n屏蔽掉不是匹配的内容

[root@localhost tmp]# sed -n '/1/p' data.txt
1

六、s用法

sed 's/要被取代的字串/新的字串/g'  g本行全部替换 数字1只替换第一个匹配的,数字3之i替换第三个匹配的,一次类推

1.匹配关键字更改

[root@localhost tmp]# sed 's/1/new1/g' data.txt
new1
2
3
4
5

2.加上e同时操作及替换,如下,将第三行到末行删掉,同时将bash替换成blueshell

nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
1 root:x:0:0:root:/root:/bin/blueshell
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh

七、w用法

1.将data6.txt文件的第1,2行写入 test.txt文件中

[root@localhost ~]# sed '1,2w test.txt' data6.txt
This is line number 1.
This is line number 2.
This is line number 3.
This is line number 4.
[root@localhost ~]# cat test.txt
This is line number 1.
This is line number 2.

2.匹配的关键字那行都写入你要的文件中,如下:

[root@localhost tmp]# cat test
<html>
<title>First Wed</title>
<body>
h1chenh1
h2lingh2
h3shuiqingh3
</body>
</html>

[root@localhost tmp]# sed -n '/shuiqing/w me.txt' test
[root@localhost tmp]# cat me.txt
h3shuiqingh3

八、y用法

1.单个值进行一对一的映射,如下面的1对应4

[root@localhost ~]# echo "This 1 is a test of 1 try." | sed 'y/123/456/'
This 4 is a test of 4 try.

九、r用法

1.将data12.txt文件内容插入data6.txt文件的第3行下面开始,如下:

[root@localhost ~]# cat data12.txt
This is an added line.
This is the second added line.
[root@localhost ~]# sed '3r data12.txt' data6.txt
This is line number 1.
This is line number 2.
This is line number 3.
This is an added line.
This is the second added line.
This is line number 4.

#################################################

示例:

egg1:示例匹配关键字加上需要的符号

[root@localhost tmp]# cat test
<html>
<title>First Wed</title>
<body>
h1chenh1
h2lingh2
h3shuiqingh3
</body>
</html>

[root@localhost tmp]# sed '/h[0-9]/{s//\<&\>/1;s//\<\/&\>/2}' test
<html>
<title>First Wed</title>
<body>
<h1>chen</h1>
<h2>ling</h2>
<h3>shuiqing</h3>
</body>
</html>

egg2:sed可以拼接命令处理:如下

ll | grep -Ev "75|76|78" | awk '{print $NF}' | sed -r 's#(.*)#rm -f \1#g' | bash

除了75,76,78文件外的其他文件过滤出来交给sed拼接好命令,最后交给bash处理批量删除

sed随笔的更多相关文章

  1. sed 随笔

    1)sed 功能说明 sed     全称    stream editor    基本功能    增删改查    过滤    取行 语法格式: sed  [options]  [sed-comman ...

  2. 关于sed中的Pattern Space和Hold Space的随笔

    首先是一部分概念和示例,这部分转自:http://coolshell.cn/articles/9104.html Pattern Space 第零个是关于-n参数的,大家也许没看懂,没关系,我们来看一 ...

  3. linux基础—课堂随笔05_文本三剑客之SED

    1.简介 sed是非交互式的编辑器,它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

  4. Linux随笔-鸟哥Linux基础篇学习总结(全)

    Linux随笔-鸟哥Linux基础篇学习总结(全) 修改Linux系统语系:LANG-en_US,如果我们想让系统默认的语系变成英文的话我们可以修改系统配置文件:/etc/sysconfig/i18n ...

  5. sed 大括号 sed {} 的作用详解

    今天看别人写的脚本的时候,看到了sed  -r   {}   我看网上对于这个的记录比较少,所以就写了这篇随笔. 先看一下效果 cat  test.txt image: qqq/www/eee:TAG ...

  6. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  7. 【置顶】CoreCLR系列随笔

    CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...

  8. C++随笔:.NET CoreCLR之GC探索(4)

    今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...

  9. C++随笔:从Hello World 探秘CoreCLR的内部(1)

    紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...

  10. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

随机推荐

  1. ORACLE之自治事务

    在创建存储过程时,可以用关键字: PRAGMA AUTONOMOUS_TRANSACTION 创建自治事务. 常用场景: 触发器抛错导致事务回滚,日志的记录需要用自治事务进行记录 代码抛错,导致数据库 ...

  2. 实例正常,page页损坏处理

    1.select count(*) from XXXXX_homework; 可以查询 2.check table XXXXX_homework; 有报错,报连接失败. ERROR 2013 (HY0 ...

  3. 学习Anaconda,jupyter notebook

    20200210,理解了jupyter在anaconda中的意义,vs code觉得对我这个初学者来讲,更容易使用,pycharm虽然破解安装了,但是感觉不太好用,随后再说 20200211, jup ...

  4. 【C++复习】第七章 类的继承(基类、派生类、虚基类)

    1.基类与派生类 类的继承:面向对象的程序设计中提供了类的继承机制,允许程序员在保持原有类特性的基础上,进行更具体.更详细的定义 用途:代码的重用性(继承)和可扩充性(派生) 例:植物大战僵尸游戏中, ...

  5. 【转载】win10怎么设置窗口护眼?

    转载地址:http://www.downza.cn/xy/122656.html win10设置窗口护眼模式的方法 2021-04-13 13:30:54来源:下载之家作者:down 小伙伴们你们知道 ...

  6. TCP 协议之三次握手(一)

    (声明:本文是阅读此文的总结笔记) 面试中对于该知识点的考察频繁,一般作为面试的暖场问题,你能够答出多少,答得多深刻,条理多清晰,给面试官的印象真的很重要. 三次握手的过程 TCP是面向连接的,全双工 ...

  7. zTree异步获取,默认展开一级节点

    zTree官网 https://treejs.cn/v3/api.php 涉及到zTree的异步获取 这里主要是在setting部分的设置: setting: { ..., async: {enabl ...

  8. JDK8的异步处理方式-CompletableFuture的使用

    一.背景 jdk8中加入了实现类CompletableFuture,用于异步编程.底层做任务使用的是ForkJoin, 顾名思义,是将任务的数据集分为多个子数据集,而每个子集,都可以由独立的子任务来处 ...

  9. Linux 看进程的线程数

    pstree -p 12345|wc -l 看进程的线程数 centos7默认并没有安装pstree,所以会有pstree:command not found 安装一下 yum install psm ...

  10. JDBC基本案例

    public static void main(String[] args) throws Exception { //1注册驱动 Class.forName("com.mysql.jdbc ...