揭开sed命令的面纱 你还能做更多

日期: 2012-01-30 作者:Sander van Vugt翻译:Mark 来源:TechTarget中国 英文

表面上看,Unix流编辑器(sed)可能看上去只是一个温和的文本编辑器。但是在它平静的外表之下有着强大的功能,可以作为高级功能来帮助管理你的数据中心资源,而你只用敲击几个键。这篇文章就将为你揭开sed中某些强大功能的神秘面纱。   sed案例   为什么是sed呢?像vi一样的普通编辑器也可以修改文本文件。

不同在于sed同时处理多个文件时更高效。用其它编辑器以同一途径过滤文本的能力是个未知数。sed的默认行为是逐行地初查输入文件,将命令应用到这些行上并将结果写入标准输出。为了执行这些命令,sed使用正则表达式。

下面让我们来看看Listing 1中你能看到的应用到文件Users的例子: my-c……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

表面上看,Unix流编辑器(sed)可能看上去只是一个温和的文本编辑器。但是在它平静的外表之下有着强大的功能,可以作为高级功能来帮助管理你的数据中心资源,而你只用敲击几个键。这篇文章就将为你揭开sed中某些强大功能的神秘面纱。

  sed案例

  为什么是sed呢?像vi一样的普通编辑器也可以修改文本文件。不同在于sed同时处理多个文件时更高效。用其它编辑器以同一途径过滤文本的能力是个未知数。sed的默认行为是逐行地初查输入文件,将命令应用到这些行上并将结果写入标准输出。为了执行这些命令,sed使用正则表达式。下面让我们来看看Listing 1中你能看到的应用到文件Users的例子:

my-computer:~> cat users

lori:x:1006:100::/home/lori:/bin/bash

linda:x:1007:100::/home/linda:/bin/bash

lydia:x:1008:100::/home/lydia:/bin/bash

lisa:x:1009:100::/home/lisa:/bin/bash

leonora:x:1010:100:/home/leonora:/bin/bash

  Listing 1

  为了启动,你可以只显示示例文件中的几行,下面的命令显示头两行省下了后面的:

sed 2q users

  更实用的是下面的命令,它列出了包括or字符串在内的所有行:

sed -n /or/p users

  在这个例子中,-n是or搜索字符串后的强制选项。在这个字符串后面,p命令列出结果。在这个例子中,你已经查询了or字符串。sed使用正则表达式,这个强大的搜索模式可以在Linux和Unix环境中使用,它能让你的搜索更灵活。下面是使用正则表达式的一些例子:

sed -n /^or/p users:显示不包括文本or的所有行。

sed -n /./p users: 显示至少包括一个字符的所有行。

sed -n /./p users:显示有.的所有行。

  仅仅列出行并不是让sed如此强大的地方,你还可以替换字符。下面的命令概括了该语法:

sed s/leo/lea/g users

  该命令用字符串lea替换了leo,并将结果写入标准输出。将它写入标准输出非常安全,但是它不会将任何变更应用到文件。要做变更,在命令中添加-i选项。

sed -i s/leo/lea/g users

  这些变更即刻应用,如果你明白自己在做什么,这是很有用的。如果你对sed仍然动摇,先将结果发送到标准输出,因此你就可以在编写它之前检查了。

  你可以通过sed的shell脚本功能发挥它的全部力量。例如,如果你有四个文件,在现有的目录中命名为file1、file2、file3和file4,而你需要将每个文件中的文本one替换为文本ONE。以下的脚本行将执行这个任务:

for i in file[1-4]; do sed -i s/one/ONE/g $i; done

  想像一下数据中心中sed的力量:例如,你可以变更包含刚刚替换的存储设备ID的所有配置文件,或者你可以修改一个模板文件来确保__服务的名字替换成了你正使用服务的真实名称。sed的可能性是无限的。

相关推荐

  • Linux正则表达式技术指南

    作为一个Linux管理员,您需要对文本文件进行处理。您可以使用不同的工具如grep、awk以及sed去查找包含特定文本串的文件。这里,我将介绍一种使用正则表达式……