sed是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

sed命令常用参数

常用命令

函数命令 说明
1,n 需要操作的行,第一行至第N行
s search 查找替换,这个命令使用最多
a append 添加
i insert 插入
c 替换
d 删除行
p 打印

还有两个最重要的参数

-n 使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

-i 直接替换原文件,不加-i都不会修改原文件,只是输出或者放置内存中。

sed常用命令的使用

  1. cat test.txt
  2. 111
  3. 222
  4. 333
  5. 444
  6. 555
  7. 666
  8. 777
  9. 打印第三行至第五行
  10. sed -n '3,5p' test.txt
  11. 333
  12. 444
  13. 555
  14. 删除第三至第五行
  15. sed '3,5d' test.txt
  16. 111
  17. 222
  18. 666
  19. 777
  20. 删除第三至第五行并修改原文件
  21. sed -i '3,5d' test.txt
  22. cat test.txt
  23. 111
  24. 222
  25. 666
  26. 777
  27. 第二行之前添加qqq
  28. sed '2i qqq' test.txt
  29. 111
  30. qqq
  31. 222
  32. 333
  33. 444
  34. 555
  35. 666
  36. 777
  37. 第二行之后添加qqq
  38. sed '2a qqq' test.txt
  39. 111
  40. 222
  41. qqq
  42. 333
  43. 444
  44. 555
  45. 666
  46. 777
  47. 第二行替换为qqq
  48. sed '2c qqq' test.txt
  49. 111
  50. qqq
  51. 333
  52. 444
  53. 555
  54. 666
  55. 777

sed最重要的s命令,查找替换

sed "s/查找/替换/g" g表示一行全部替换,默认一行只替换第一个

  1. cat test.txt
  2. 111
  3. 222
  4. 111
  5. 444
  6. 555
  7. sed "s/1/php/" test.txt
  8. php11
  9. 222
  10. php11
  11. 444
  12. 555
  13. sed "s/1/php/g" test.txt
  14. phpphpphp
  15. 222
  16. phpphpphp
  17. 444
  18. 555

跟正则相似。^表示每一行开始,$表示每一行结束。正则匹配是遵循规范的。

  1. 每一行开始加//
  2. sed "s/^/\/\//g" test.txt
  3. //111
  4. //222
  5. //111
  6. //444
  7. //555
  8. 每一行行尾加;
  9. sed "s/$/;/g" test.txt
  10. 111;
  11. 222;
  12. 111;
  13. 444;
  14. 555;

替换满足条件某一个字符

  1. 替换每一行的第二匹配字符1,替换成+
  2. sed "s/1/+/2" test.txt
  3. 1+1
  4. 222
  5. 1+1
  6. 444
  7. 555

多个匹配替换用;隔开

  1. 2替换成+,把4替换成-
  2. sed "s/2/+/g;s/4/-/g" test.txt
  3. 111
  4. +++
  5. 111
  6. ---
  7. 555

圆括号子集,在替换结果里面使用\1 \2 \n

  1. cat test.txt
  2. 1hello1
  3. 222
  4. 111
  5. 444
  6. 555
  7. sed "s/1\(.*\)1/wo\1/g" test.txt
  8. wohello
  9. 222
  10. wo1
  11. 444
  12. 555

常用的项目文件替换

  1. 把当前项目中所有文件中的111替换成helloworld
  2. sed -i "s/111/helloworld/g" `grep -rl . *`

Linux中sed基础的更多相关文章

  1. Linux中sed的用法实践

    Linux中sed的用法实践 参考资料:https://www.cnblogs.com/emanlee/archive/2013/09/07/3307642.html http://www.fn139 ...

  2. Linux中Sed的用法

    Linux中Sed的用法 sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法sed命令行格式为: ...

  3. linux中sed命令(全面解析)

    目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...

  4. linux之sed基础命令详解

    sed (Stream  EDitor)是一个强大的字符流编辑器,输入一般是来自文件,默认情况下不编辑原文件,仅对模式空间中的数据作处理;而后,将模式空间打印到屏幕显示 sed基础用法 sed [op ...

  5. linux之 sed 基础

    转载:https://www.cnblogs.com/chensiqiqi/p/6382080.html sed 介绍 Sed命令是操作,过滤和转换文本内容的强大工具.常用功能有增删改查(增加,删除, ...

  6. Linux中shell基础、重定向、管道符、环境变量

    1.什么是shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口(命令解释器).它接收用户输入的命令并把它送入内核去执行.起着协调用户与系统的一致性和在用户与系统之间进行交互的 ...

  7. Linux中的基础

    前言: 这里介绍Linux基础管理.主要包括.Linux中的帮助命令(man.help).系统基础(开机.关机.重启) 一.Linux中的帮助命令. 1.内部命令: #help 命令名 例如:help ...

  8. Linux 中,基础命令 command not found...问题

    linux中出现基本命令找不到的问题,经过查找发现是/etc/profile文件出现了问题,解决方案如下: 问题详细: [root@master ~]# ll bash: ls: command no ...

  9. linux中sed的用法【转】

    sed命令行格式为:         sed [-nefri]  ‘command’  输入文本/文件 常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的 ...

随机推荐

  1. Django 基本使用

    Django 基本使用 Django 安装 pip install django Django 创建项目 django-admin startproject 项目名称 Django 创建应用 pyth ...

  2. hdu 1907 John (尼姆博弈)

    John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  3. MAC OS下编译apple跨平台的libevent库 (可延申到其它第三库)

    apple下的跨平台是指不同设备上的苹果系统以及同一系统在不同cpu体系的不同版本. 前面一篇介绍如何用ndk编译android跨平台的第三库,那样的方法却不能应用在apple上. 网上可以找到这么一 ...

  4. .Net Core 使用NPOI导入数据

    一.搭建环境 1.新建ASP.NET Core Web 应用程序 2.选择API 3.引用Swashbuckle.AspNetCore NuGet 包进行安装. Swashbuckle.AspNetC ...

  5. Python中lambda的使用,与它的三个好基友介绍!

    匿名函数lambda 除了def语句,python还提供了一种生成函数对象的表达式形式.由于它与LISP语言中的一个工具类似,所以称为lambda. 就像def一样,这个表达式创建了一个之后能够调用的 ...

  6. Roarctf 几道pwn 复现

    1.easy_pwn 可以利用的点: __int64 __fastcall sub_E26(signed int a1, unsigned int a2) { __int64 result; // r ...

  7. 新闻实时分析系统 Spark Streaming实时数据分析

    1.Spark Streaming功能介绍1)定义Spark Streaming is an extension of the core Spark API that enables scalable ...

  8. K8s 集群节点在线率达到 99.9% 以上,扩容效率提升 50%,我们做了这 3 个深度改造

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 张振(守辰) ...

  9. 微服务 consul使用

    前言 常见的注册中心有zookeeper .eureka.consul.etcd.从生态发展.便利性.语言无关性等角度来综合考量,选择consul,多数据中心支持,支持k-v能力,可扩展为配置中心.g ...

  10. mvc 学习笔记

    1.routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); MVC中的路由忽略,只要访问的地址中带有 .axd , 该请求都将排除在mv ...