欢迎来到天天文库
浏览记录
ID:50554301
大小:45.50 KB
页数:17页
时间:2020-03-10
《linux sed命令参数及用法详解.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、sedsed编辑器是Linux系统管理员的工具包中最有用的资产之一,因此,有必要彻底地了解其应用Linux操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用工具是sed。它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值。sed实用工具是一个“编辑器”,但它与其它大多数编辑器不同。除了不面向屏幕之外,它还是非交互式的。这意味着您必须将要对数据执行的命令插入到命令行或要处理的脚本中。当显示它时,请忘记您在使用MicrosoftWord或其它
2、大多数编辑器时拥有的交互式编辑文件功能。sed在一个文件(或文件集)中非交互式、并且不加询问地接收一系列的命令并执行它们。因而,它流经文本就如同水流经溪流一样,因而sed恰当地代表了流编辑器。它可以用来将所有出现的"Mr.Smyth"修改为"Mr.Smith",或将"tigercub"修改为"wolfcub"。流编辑器非常适合于执行重复的编辑,这种重复编辑如果由人工完成将花费大量的时间。其参数可能和一次性使用一个简单的操作所需的参数一样有限,或者和一个具有成千上万行要进行编辑修改的脚本文件一样复杂。sed是Linux和UNIX工具箱中最有用的工具之一,且使用的参
3、数非常少。sed的工作方式sed实用工具按顺序逐行将文件读入到内存中。然后,它执行为该行指定的所有操作,并在完成请求的修改之后将该行放回到内存中,以将其转储至终端。完成了这一行上的所有操作之后,它读取文件的下一行,然后重复该过程直到它完成该文件。如同前面所提到的,默认输出是将每一行的内容输出到屏幕上。在这里,开始涉及到两个重要的因素—首先,输出可以被重定向到另一文件中,以保存变化;第二,源文件(默认地)保持不被修改。sed默认读取整个文件并对其中的每一行进行修改。不过,可以按需要将操作限制在指定的行上。该实用工具的语法为:sed[options]'{comman
4、d}'[filename]在这篇文章中,我们将浏览最常用的命令和选项,并演示它们如何工作,以及它们适于在何处使用。替换命令sed实用工具以及其它任何类似的编辑器的最常用的命令之一是用一个值替换另一个值。用来实现这一目的的操作的命令部分语法是:'s/{oldvalue}/{newvalue}/'因而,下面演示了如何非常简单地将"tiger"修改为"wolf":$echoThetigercubswillmeetonTuesdayafterschool
5、sed's/tiger/wolf/'ThewolfcubswillmeetonTuesdayafterschool$
6、注意如果输入是源自之前的命令输出,则不需要指定文件名—同样的原则也适用于awk、sort和其它大多数LinuxUNIX命令行实用工具程序。多次修改如果需要对同一文件或行作多次修改,可以有三种方法来实现它。第一种是使用"-e"选项,它通知程序使用了多条编辑命令。例如:$echoThetigercubswillmeetonTuesdayafterschool
7、sed-e's/tiger/wolf/'-e's/after/before/'ThewolfcubswillmeetonTuesdaybeforeschool$这是实现它的非常复杂的方法,因此"-e"选项不常
8、被大范围使用。更好的方法是用分号来分隔命令:$echoThetigercubswillmeetonTuesdayafterschool
9、sed's/tiger/wolf/;s/after/before/'ThewolfcubswillmeetonTuesdaybeforeschool$注意分号必须是紧跟斜线之后的下一个字符。如果两者之间有一个空格,操作将不能成功完成,并返回一条错误消息。这两种方法都很好,但许多管理员更喜欢另一种方法。要注意的一个关键问题是,两个撇号('')之间的全部内容都被解释为sed命令。直到您输入了第二个撇号,读入这些命令的shell程序才
10、会认为您完成了输入。这意味着可以在多行上输入命令—同时Linux将提示符从PS1变为一个延续提示符(通常为">")—直到输入了第二个撇号。一旦输入了第二个撇号,并且按下了Enter键,则处理就进行并产生相同的结果,如下所示:$echoThetigercubswillmeetonTuesdayafterschool
11、sed'>s/tiger/wolf/>s/after/before/'ThewolfcubswillmeetonTuesdaybeforeschool$全局修改让我们开始一次看似简单的编辑。假定在要修改的消息中出现了多次要修改的项目。默认方式下,结果可
12、能和预期的有所不同,如下
此文档下载收益归作者所有