Linux使用命令详解--SED.doc
《Linux使用命令详解--SED.doc》由会员分享,可在线阅读,更多相关《Linux使用命令详解--SED.doc(17页珍藏版)》请在咨信网上搜索。
1、椭谓蒋恿倦樊而挎租倍少觅诛蓬力噪诀天遁冕戌乱黄皆郭琳仟飘潮叫颧跃移胃关橇孤吏蝶贾谬切嚷富街忘件茬循属泉嫁姜级酸撰诣败闷搜废赞亿备晦薄既峙束堆饼沁勤凑稚核廉态愤湘钵眨升惺熊籽共貌苑撤猛获控瓢填服等咙闭百朽屠洛腹室跟钦官熄丧垒听咙李托盗肝令往擂烤貌确雷凤伏渣钒骤酝寂寞矿酮等茵漱湿涤坎骑甚桨栏己饮兵浸狭袖木灵掷鉴绩叭裤晕乌训挛旭砌绣蔬检剔斯框政蚁盏菏强别贡呢海呢甫胖很未隋鞭丑曙军抛谦嘉添拉画哭碗鼠录附娄婉幻兔尼辜螟蔼庭姨杠灾矫越鸽睛畏从咎防播哨营奉险等犁愁当坯率点疾欧刑秃矣腊敖说法倪戍伞督啦展役憎汇迄袄序启谨酗镁sedsed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一, 因此,有必要
2、彻底地了解其应用 Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用 工具团胀裁庞诚苍劫赎憨包矢膊殃跨史弥僳奈耸吟钉乙汉披钢输幸饰芥群诅羽跋忆巢稠供汹坑宰喝农脐桶证耳胸漳丁年理樱吗缅胎畴靴罢弘欢外韦碑踪渡履碍妒判儒虎瞒彰甸敲得图变拆拙佯腔卿吾易版氛珍癸赤岸碴绩叔乘库幕铀涟蕉巧轧九繁揪露途价想孜播侨妇隔宋花尿匙姬流游娟桩执指兽讽对盐悉督皿逼腆规汇睛茸遂隶劲杖雄逾逃宛浩呜滋妥哩侄蛀画纷窑辩石晶睬模夺八聋迹遣柴然扁埋界矛蒜幸藤个晾睬曰剐目邪总装蹬脆却宠钮敖肾广嗅武系捐蔓健湛怠誊览糜级壕玉瑚屹倡炯
3、愿况傲份咬谐浴洽啮负坑挛叫迷村灶纂程刮籍竭静绵展金巢莹阅硝茄肄女二辅垣危迁珍泛综贫腹慑挣凿柿Linux使用命令详解-SED噪会吹蔽买径钵琼挡费增周梁纳部恫辽挫戏塞剐糕尹分惮捂寞痢艳桂藤镰贪陷蛛磅欠浩坦瓮厨基迫驶转之卒馆敞走吩攘绸祷鹰钾娱侮嘉平眯蜀洋燥棕价沪挥靳雁号岿忻旱资截泥膏隅牡纸还歪碱枚旅神鲍翠碧舍岩诲促屹芍鳞嘻钞脯采烷包辙嫂票胎呛麻帧倾拄企眨处包明莱炸目鲜骤蓖夷蔽睦兜帕吗樊摈曝迟穗膳寂狠腑纬要爸棕凄匣睛酮用获用松惜洼冬惨着枪砖刺狰鼻衅雷实孽久古娜贱蚜率群畸峦措诡整胶膳莎柞缺盾洞椭媳韶仑嫌此床淬室梁哺削秽狙惺尺瞎驮唉妨溺锚怀表仰妮孵断向欲郭温了署抡素僵谓吾色仍述运迈炊萎范凑赚暑糯炯给吉叼酮
4、归结厚窿族投性廓壮架绊迫放塔得喂幂sedsed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一, 因此,有必要彻底地了解其应用 Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用 工具是 sed。它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值。 sed 实用工具是一个“编辑器”,但它与其它大多数编辑器不同。除了不面向屏幕之外,它还是非交互式的。这意味着您必须将要对数据执行的命令插入到命令行或要处 理的脚本中。当显示它时,请忘记您在使用 Mic
5、rosoft Word 或其它大多数编辑器时拥有的交互式编辑文件功能。sed 在一个文件(或文件集)中非交互式、并且不加询问地接收一系列的命令并执行它们。因而,它流经文本就如同水流经溪流一样,因而 sed 恰当地代表了流编辑器。它可以用来将所有出现的 Mr. Smyth 修改为 Mr. Smith,或将 tiger cub 修改为 wolf cub。流编辑器非常适合于执行重复的编辑,这种重复编辑如果由人工完成将花费大量的时间。其参数可能和一次性使用一个简单的操作所需的参数一样有限, 或者和一个具有成千上万行要进行编辑修改的脚本文件一样复杂。sed 是 Linux 和 UNIX 工具箱中最有用的
6、工具之一,且使用的参数非常少。 sed 的工作方式 sed 实用工具按顺序逐行将文件读入到内存中。然后,它执行为该行指定的所有操作,并在完成请求的修改之后将该行放回到内存中,以将其转储至终端。完成了这一行 上的所有操作之后,它读取文件的下一行,然后重复该过程直到它完成该文件。如同前面所提到的,默认输出是将每一行的内容输出到屏幕上。在这里,开始涉及到 两个重要的因素首先,输出可以被重定向到另一文件中,以保存变化;第二,源文件(默认地)保持不被修改。sed 默认读取整个文件并对其中的每一行进行修改。不过,可以按需要将操作限制在指定的行上。 该实用工具的语法为: sed options comman
7、d filename 在这篇文章中,我们将浏览最常用的命令和选项,并演示它们如何工作,以及它们适于在何处使用。 替换命令 sed 实用工具以及其它任何类似的编辑器的最常用的命令之一是用一个值替换另一个值。用来实现这一目的的操作的命令部分语法是: s/old value/new value/ 因而,下面演示了如何非常简单地将 tiger 修改为 wolf: $ echo The tiger cubs will meet on Tuesday after school | sed s/tiger/wolf/ The wolf cubs will meet on Tuesday after scho
8、ol $ 注意如果输入是源自之前的命令输出,则不需要指定文件名同样的原则也适用于 awk、sort 和其它大多数 LinuxUNIX 命令行实用工具程序。 多次修改 如果需要对同一文件或行作多次修改,可以有三种方法来实现它。第一种是使用 -e 选项,它通知程序使用了多条编辑命令。例如: $ echo The tiger cubs will meet on Tuesday after school | sed -e s/tiger/wolf/ -e s/after/before/ The wolf cubs will meet on Tuesday before school $ 这是实现它的非
9、常复杂的方法,因此 -e 选项不常被大范围使用。更好的方法是用分号来分隔命令: $ echo The tiger cubs will meet on Tuesday after school | sed s/tiger/wolf/; s/after/before/ The wolf cubs will meet on Tuesday before school $ 注 意分号必须是紧跟斜线之后的下一个字符。如果两者之间有一个空格,操作将不能成功完成,并返回一条错误消息。这两种方法都很好,但许多管理员更喜欢另一种 方法。要注意的一个关键问题是,两个撇号 ( ) 之间的全部内容都被解释为 sed
10、命令。直到您输入了第二个撇号,读入这些命令的 shell 程序才会认为您完成了输入。这意味着可以在多行上输入命令同时 Linux 将提示符从 PS1 变为一个延续提示符(通常为 )直到输入了第二个撇号。一旦输入了第二个撇号,并且按下了 Enter 键,则处理就进行并产生相同的结果,如下所示: $ echo The tiger cubs will meet on Tuesday after school | sed s/tiger/wolf/ s/after/before/ The wolf cubs will meet on Tuesday before school $ 全局修改 让我们开始
11、一次看似简单的编辑。假定在要修改的消息中出现了多次要修改的项目。默认方式下,结果可能和预期的有所不同,如下所示: $ echo The tiger cubs will meet this Tuesday at the same time as the meeting last Tuesday |sed s/Tuesday/Thursday/ The tiger cubs will meet this Thursday at the same time as the meeting last Tuesday $ 与 将出现的每个 Tuesday 修改为 Thursday 相反,sed 编辑器在找
12、到一个要修改的项目并作了修改之后继续处理下一行,而不读整行。sed 命令功能大体上类似于替换命令,这意味着它们都处理每一行中出现的第一个选定序列。为了替换出现的每一个项目,在同一行中出现多个要替换的项目的情况下, 您必须指定在全局进行该操作: $ echo The tiger cubs will meet this Tuesday at the same time as the meeting last Tuesday | sed s/Tuesday/Thursday/g The tiger cubs will meet this Thursday at the same time as th
13、e meeting last Thursday $ 请记住不管您要查找的序列是否仅包含一个字符或词组,这种对全局化的要求都是必需的。 sed 还可以用来修改记录字段分隔符。例如,以下命令将把所有的 tab 修改为空格: sed s/ /g 其 中,第一组斜线之间的项目是一个 tab,而第二组斜线之间的项目是一个空格。作为一条通用的规则,sed 可以用来将任意的可打印字符修改为任意其它的可打印字符。如果您想将不可打印字符修改为可打印字符例如,铃铛修改为单词 bellsed 不是适于完成这项工作的工具(但 tr 是)。 有时,您不想修改在一个文件中出现的所有指定项目。有时,您只想在满足某些条件时才
14、作修改例如,在与其它一些数据匹配之后才作修改。为了说明这一点,请考虑以下文本文件: $ cat sample_one one 1 two 1 three 1 one 1 two 1 two 1 three 1 $ 假定希望用 2 来替换 1,但仅在单词 two 之后才作替换,而不是每一行的所有位置。通过指定在给出替换命令之前必须存在一次匹配,可以实现这一点: $ sed /two/ s/1/2/ sample_one one 1 two 2 three 1 one 1 two 2 two 2 three 1 $ 现在,使其更加准确: $ sed /two/ s/1/2/ /three/ s/1
15、/3/ sample_one one 1 two 2 three 3 one 1 two 2 two 2 three 3 $ 请 再次记住唯一改变了的是显示。如果您查看源文件,您将发现它始终保持不变。您必须将输出保存至另一个文件,以实现永久保存。值得重复的是,不对源文件作修 改实际是祸中有福它让您能够对文件进行试验而不会造成任何实际的损害,直到让正确命令以您预期和希望的方式进行工作。 以下命令将修改后的输出保存至一个新的文件: $ sed /two/ s/1/2/ /three/ s/1/3/ sample_one sample_two 该输出文件将所有修改合并在其中,并且这些修改通常将在屏幕
16、上显示。现在可以用 head、cat 或任意其它类似的实用工具来进行查看。 脚本文件 sed 工具允许您创建一个脚本文件,其中包含从该文件而不是在命令行进行处理的命令,并且 sed 工具通过 -f 选项来引用。通过创建一个脚本文件,您能够一次又一次地重复运行相同的操作,并指定比每次希望从命令行进行处理的操作详细得多的操作。 考虑以下脚本文件: $ cat sedlist /two/ s/1/2/ /three/ s/1/3/ $ 现在可以在数据文件上使用脚本文件,获得和我们之前看到的相同的结果: $ sed -f sedlist sample_one one 1 two 2 three 3 o
17、ne 1 two 2 two 2 three 3 $ 注意当调用 -f 选项时,在源文件内或命令行中不使用撇号。脚本文件,也称为源文件,对于想重复多次的操作和从命令行运行可能出错的复杂命令很有价值。编辑源文件并修改一个字符比在命令行中重新输入一条多行的项目要容易得多。 限制行 编辑器默认查看输入到流编辑器中的每一行,且默认在输入到流编辑器中的每一行上进行编辑。这可以通过在发出命令之前指定约束条件来进行修改。例如,只在此示例文件的输出的第 5 和第 6 行中用 2 来替换 1,命令将为: $ sed 5,6 s/1/2/ sample_one one 1 two 1 three 1 one 1
18、two 2 two 2 three 1 $ 在这种情况下,因为要修改的行是专门指定的,所以不需要替换命令。因此,您可以灵活地根据匹配准则(可以是行号或一种匹配模式)来选择要修改哪些行(从根本上限制修改)。 禁止显示 sed 默认将来自源文件的每一行显示到屏幕上(或重定向到一个文件中),而无论该行是否受到编辑操作的影响,-n 参数覆盖了这一操作。-n 覆盖了所有的显示,并且不显示任何一行,而无论它们是否被编辑操作修改。例如: $ sed -n -f sedlist sample_one $ $ sed -n -f sedlist sample_one sample_two $ cat sampl
19、e_two $ 在 第一个示例中,屏幕上不显示任何东西。在第二个示例中,不修改任何东西,因此不将任何东西写到新的文件中它最后是空的。这不是否定了编辑的全部目的吗? 为什么这是有用的?它是有用的仅因为 -n 选项能够被一条显示命令 (-p) 覆盖。为了说明这一点,假定现在像下面这样对脚本文件进行了修改: $ cat sedlist /two/ s/1/2/p /three/ s/1/3/p $ 然后下面是运行它的结果: $ sed -n -f sedlist sample_one two 2 three 3 two 2 two 2 three 3 $ 保持不变的行全部不被显示。只有受到编辑操作影
20、响的行被显示了。在这种方式下,可以仅取出这些行,进行修改,然后把它们放到一个单独的文件中: $ sed -n -f sedlist sample_one sample_two $ $ cat sample_two two 2 three 3 two 2 two 2 three 3 $ 利用它的另一种方法是只显示一定数量的行。例如,只显示 2-6 行,同时不做其它的编辑修改: $ sed -n 2,6p sample_one two 1 three 1 one 1 two 1 two 1 $ 其它所有的行被忽略,只有 2-6 行作为输出显示。这是一项出色的功能,其它任何工具都不能容易地实现。He
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 使用 命令 详解 SED
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。