sed是linux系统里非常简单实用的文本处理小工具,配合正则表达式以及find、grep等基本命令,可以非常快速实现一些日常的文本处理。

举几个简单的例子吧:

1. 将当前目录下所有txt文件中abc替换为xyz:

sed -i ‘s/abc/xyz/g'  *.txt  

解释一下,这里-i参数是直接修改输入文件, ’s/abc/xyz/g' 是对输入文件执行的操作, *.txt 是当前目录下的所有txt文件。

‘s/abc/xyz/g'  意思是把输入文件逐行读入,然后查找abc并替换为xyz。这里的s就是替换操作的意思,g是指替换这一行的所有abc。也就是说,如果一行有多个abc都会替换;如果没有这个g,只会替换第一个abc。当然了,如果这一行没有abc, 就不会替换。

2. 给替换操作添加行数范围限制, 比如在前100行进行查找替换(后续行不替换),可以写成:

sed -i ‘1,100s/abc/xyz/g'  *.txt 

3. 匹配字符串并删除该行:

sed  -i  '/zhangsan/d'   myfile.txt 

这个命令会把myfile.txt里,所有包含zhangsan这个字符串的行,都删掉。

4. 那么问题来了,如果只想对前100行进行查找并删除呢? 
不能写成sed -i  '/zhangsan/1,100d'  myfile.txt 
也不能写成 sed  -i  '1,100/zhangsan/d'  myfile.txt 
都会报格式错误,那到底该怎么写呢?

正确的写法是:

sed  -i  "1,100{/zhangsan/d}"  myfile.txt

5. 插入一行字符串,比如在文件开头插入下面的作者和日期信息

#arthur: kevyoung

sed   -i   ’1i\#arthur: kevyoung'   myfile.c  

这里1i的意思是在第一行插入,如果是在最后一行插入,写成

sed   -i   ’$i\#arthur: kevyoung'   myfile.c

6. find跟sed结合使用:

比如需要替换的文件分布在当前目录下的各个子目录里,可以先查找到,再使用sed处理:

find  .  -name  “*.txt"  |  xargs  sed  -i  's/abc/xyz/g'   

7. grep跟sed结合使用:

比如先查找包含zhangsan的文件,然后将这些文件里的abc替换为xyz

grep -rl  zhangsan  . | xargs sed -i  's/abc/xyz/g' 

这里grep的参数r是指在当前目录下的所有子子孙孙目录查找,参数l(小写L)是列举出文件名。

sed命令删除前100行里匹配的行相关推荐

  1. sed删除以什么开头的内容_使用 sed 命令删除文件中的行

    原标题:使用 sed 命令删除文件中的行 Sed 代表流编辑器 Stream Editor ,常用于 Linux 中基本的文本处理.sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要 ...

  2. sed删除以什么开头的内容_技术|如何使用 sed 命令删除文件中的行

    Sed 代表流编辑器Stream Editor,常用于 Linux 中基本的文本处理.sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用.可用于删除或移动与给定模式匹配的特定行. ...

  3. Shell:用sed命令删除特定行

    一.sed命令 Linux sed 命令是利用脚本来处理文本文件. sed 可依照脚本的指令来处理.编辑文本文件. 此处用-i参数实现 -i : 直接在文件上编辑 (edit files in pla ...

  4. linux sed命令 删除指定行

    sed命令常用到的两个选项: -i : 直接在文件上编辑 (edit files in place) -e[默认选项]:只在命令行输出,而文件不改变 (add the script to the co ...

  5. sed命令:删除匹配行和替换

    删除以a开头的行 sed -i'/^a.*/d'tmp.txt -i 表示操作在源文件上生效.否则操作内存中数据,并不写入文件中. 在分号内的/d表示删除匹配的行 替换匹配行: sed -i's/^a ...

  6. Linux使用sed命令删除文件中指定内容

    因为日志文件太大,希望删除过早的一部分日志,虽然可以用vi或vim打开后删除,但是因为文件很大,打开就很耗时. 因此打算使用sed命令,在不打开文件的情况下删除,但是删除后需要把内容存入一个新文件中, ...

  7. [linux] linux sed命令删除一行/多行

    删除第一行 sed -i '1d' filename 范围删除,删除1-3行 sed -i '1,3d' filename 删除第n行 sed -i 'nd' filename 删除最后一行 sed ...

  8. sed命令删除最后一行的最后一个字符

    例如 {info}, {info}, {info}, {info}, 变成 {info}, {info}, {info}, {info} 命令: sed -i '$ s/.$/]/' changeLi ...

  9. sed命令的作用linux,Linux重要命之sed命令详解

    导读 Sed 代表流编辑器,常用于 Linux 中基本的文本处理.sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用.可用于删除或移动与给定模式匹配的特定行. 如何使用sed命令 ...

最新文章

  1. QIIME 2教程. 30补充资源SupplementaryResources(2020.11)
  2. ubuntu14 备份
  3. 信息学奥赛一本通(1227:Ride to Office)
  4. openlayers之EPSG3857
  5. 深入浅出ObjC之消息 (转)
  6. MongoDB CookBook读书笔记之导入导出
  7. TensorFlow基础篇(四)—— tf.nn.relu()
  8. 微信高并发资金交易系统设计方案——百亿红包背后的技术支撑
  9. Deepin下安装搭建latex编写环境
  10. Swift 实现图片转字符画的功能
  11. iTunes只能装C盘吗_就这一篇:教你真正有效地解决爆满的C盘!
  12. ansys19.0安装破解教程(图文详解)
  13. iphone游戏开发(转)
  14. Kubernetes--学习笔记-3-Kubernetes Web UI部署
  15. ArduCopter——ArduPilot——航点导航WPNav(一)
  16. 签名格式_职场商务电子邮件礼仪
  17. 因果6-估计因果效应
  18. python snmp
  19. 编程语言:C语言网络资源
  20. Excel通过单独选中每列可以实现每隔1列插入1列

热门文章

  1. python 导入 arcpy模块_ArcPy学习入门(六):导入Arcpy-阿里云开发者社区
  2. Couldn't find executable named joy_node below /opt/ros/kinetic/share/joy解决方法
  3. 【IoT】 产品设计之结构设计:模具前模与后模
  4. 【Airplay_BCT】Bonjour conformance tests苹果IOT
  5. pngquant java,使用pngquant批量压缩png
  6. 错题本——数据库系统工程师 2012
  7. 给在读研究生的一封信(转)
  8. 转:给在读研究生的一封信
  9. 点击图片实现上一张下一张JS
  10. 有些东西,我们还不知道