热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

sed命令的快速入门

sed(流编辑器),用来在命令行中直接更改一个文件中的内容,这个命令对于使用shell脚本自动批量更改大量文本文件比较有用.如你当前目录中有10000个文本文件,假设文件名从text.1到text.10000,若你希望更改这10000个文...

sed(流编辑器),用来在命令行中直接更改一个文件中的内容,这个命令对于使用

 

shell脚本自动批量更改大量文本文件比较有用.如你当前目录中有10000个文本文件

 

,假设文件名从text.1到text.10000,若你希望更改这10000个文件,一种方法是使用

 

如vi这样的文本编辑器来逐一进行更改,而对于优秀的管理员来说它们可能会书写一个

 

shell脚本来使用sed批量进行更改.本文就是sed这个命令的快速入门教程.

 

(1).基本格式

 

   sed [-nefri] [动作] [Input_File]

 

选项:

 

    -n :表示安静模式操作,也就是只将被更改的行输出,没更改的行不输出,默认sed

 

        是输出所有的行

 

    -e Scrip:指定sed的执行命令可以指定多个这个选项

 

    -f Script_File:指定执行一个包含sed命令的脚本文件

 

    -r:支持扩展的正则表达式(默认只支持基础的正则表达式)

 

    -i:直接操作原文件,默认是不更改原文件的,而只是将更改结果直接输出到

 

       标准输出上,可以使用这个选项来让sed直接更改原文件

 

动作:

 

   基本格式: [n1[,n2]] Function

 

   说明:n1和n2用来指定修改的范围(从第n1行到第n2行),他们不一定必须指定

 

       若都没指定则表示修改整个文件,若没有指定n2则表示修改的范围为从n1

 

       到文件末尾.

 

   注:n1,n2可以为数字,表示第N行(从1开始),当然也可以用'/Pattern/'来指定

 

      表示使用查找来指定函数,即查找到最先包含Pattern的行为该指定的行数

  

   Function有以下值:

 

   (1).插入

 

       [1].i String:表示当前行前面插入一行,内容为String

 

       [2].a String:表示当前行后面插入一行,内容为String

 

   (2).删除

 

       d:表示将指定的行删除

 

   (3).替换

 

       [1].c String:指定整行替换为String

 

       [2].s/Find_String/Replace/:表示用Replace替换Find_String

 

   (4).打印

 

       p:表示将选择的行打印出来

 

下面是一些实例:

 

假设文件example.txt的内容如下

#############################example.txt内容开始###############

line1 hello world1

line2 hello world2

line3 hello world3

#############################example.txt内容结束###############

 

(1).在第1行后面插入一行,内容为Insert after line1

sed -i -e '1a Insert after line1' example.txt

结果example.txt内容为:

line1 hello world1

Insert after line1

line2 hello world2

line3 hello world3

 

(2).在第一行前面插入一行,内容为Insert before line1

sed -i -e '1i Insert before line1' example.txt

结果:

Insert before line1

line1 hello world1

Insert after line1

line2 hello world2

line3 hello world3

 

(3).删除第2到第4行

sed -i -e '2,4d' example.txt

结果:

Insert before line1

line3 hello world3

 

(4).打印第2行

sed  -e '2p' example.txt

 

(5).将第2行替换为line2 hello world

sed -i -e '2c line2 hello world' example.txt

结果:

Insert before line1

line2 hello world

 

(6).替换第二行的hello world为world hello

sed -i -e '2s/hello world/world hello/' example.txt

结果:

Insert before line1

line2 world hello

 

好了sed简单入门就讲到这里了,由于sed命令实在太好用了,也太强大了,因此要

 

熟练使用sed还必须参考完整的sed手册页或其他高手写的教材,本文只是一个简单

 

的入门教材而已

 

本文出自 “huangyandong” 博客


推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • SPSS操作指南:双变量相关性分析的详细步骤
    本教程将详细介绍如何使用IBM SPSS Statistics进行双变量相关性分析。通过实例演示,帮助读者理解变量间的关系及其统计意义。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 如何在CAD查看器中同时打开并对比两张DWG图纸
    本文将详细介绍如何使用专业的CAD查看软件,如迅捷CAD看图,来同时打开和对比两张DWG格式的CAD图纸。无论是在设计审核还是项目管理中,掌握这一技能都能显著提高工作效率。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • Ulysses Mac v29:革新文本编辑与写作体验
    探索Ulysses Mac v29,这款先进的纯文本编辑器为Mac用户带来了全新的写作和编辑环境。它不仅具备简洁直观的界面,还融合了Markdown等标记语言的最佳特性,支持多种格式导出,并提供强大的组织和同步功能。 ... [详细]
  • 本文详细介绍了Vim编辑器的三种主要模式及其常用命令,帮助用户更好地掌握这一强大的文本编辑工具。 ... [详细]
  • 解决Windows 10开机频繁自检问题的实用方法
    许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 本文介绍了解决Oracle 10G数据库中ORA-12541 TNS: no listener错误的详细步骤。该错误通常发生在监听器服务未正确启动或配置不当的情况下,文章将指导您通过检查服务状态、配置注册表和启动监听器来解决问题。 ... [详细]
  • 在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ... [详细]
author-avatar
手机用户2602926163
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有