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

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

表面上看,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的可能性是无限的。

【编辑推荐】

  1. IBM利用EntepriseDB技术 蚕食甲骨文客户
  2. IBM联合EnterpriseDB 锁定甲骨文数据库程序员
  3. Windows市场份额高达92% Mac OS创历史新高
责任编辑:Yeva 来源: TechTarget中国
相关推荐

2011-08-02 08:59:53

2022-01-16 18:51:57

.NET 6Configurati配置

2021-05-25 09:01:21

Linux命令Bash histor

2019-10-12 10:50:00

JavaScript编程语言代码

2013-09-22 11:03:20

SocketSocket编程

2015-08-20 13:43:17

NFV网络功能虚拟化

2019-07-08 10:18:38

MPLSIP数据

2021-06-07 08:18:12

云计算云端阿里云

2010-05-17 09:13:35

2009-09-08 16:30:18

网银木马

2014-03-12 11:11:39

Storage vMo虚拟机

2009-12-03 09:19:41

Linux系统奥秘

2019-08-12 07:40:24

华为开发者黑科技

2023-06-07 13:43:49

云计算

2010-05-26 19:12:41

SVN冲突

2023-11-02 09:55:40

2009-09-15 15:34:33

Google Fast

2016-04-06 09:27:10

runtime解密学习

2009-12-01 13:07:49

无线路由器安装

2018-03-01 09:33:05

软件定义存储
点赞
收藏

51CTO技术栈公众号