Unix:避免重复使用sed

sed唯一错的是我们大多数人几乎不理解是多么强大。我们在管道中使用它来改变“这”“那”,但我们很少考虑它的编辑工作,它可以节省我们大量的时间和精力,特别是当谈到枯燥重复的工作。

  • 在Facebook上分享
  • 在Twitter上分享
  • 分享在LinkedIn
  • 在Reddit分享
  • 通过电子邮件分享
  • 印刷资源

sed是一个非常有用的工具,但通常被用来替代文本非常简单的管道时,事实上,它可以做更多的事。sed命令和独立的sed脚本可以执行很多有用的文本编辑——比我们中的大多数人可能更多的考虑。在今天的文章中,我们将看看一些示例sed命令和脚本演示如何轻松sed可以节省我们很多的时间。首先,让我们看看如何sed一般用于脚本和命令行上。在命令行上,我们可能会做这样的事情:

sed的s /这/那/ infile >输出文件

这样的命令允许我们替换词、字符串或短语在我们的文件。我们只需要记住我们核实后输出文件移动到infile(根据需要),预期的变化。如果你想删除文件的第一行,也许你想要的项目列表中包含一个文件,而不是标题,你可以这样做:

sed的1 d myfile > newfile中

这样我们可以在脚本中使用sed从一系列文件:删除空白行

# !/bin/bash ls myfile *’做sed的文件' / ^ $ / d ' $ file > $文件。tmp mv美元文件。tmp文件做美元

^ $在这个脚本中代表空白行(不包含字符行)和“d”告诉sed删除这些行。/分隔符字符。

/ ^ $ / d

你可以删除一切从第一行到第一个空白行,基本上第一段——使用一个表达式:1 / ^ $ / d把命令在一个文件中(例如,sed11)和运行它与你的目标文件如下所示:

sed - f sed12 1492美元他有三艘船,从西班牙;他顺利通过阳光,风和雨。他夜间航行;他白天航行;他用星星找到他的方式。

第一节“一千四百九十二年,哥伦布在蓝色海洋上乘风破浪”被风吹走。但即使这样的命令只是触摸表面的sed能做什么。我们可以把一系列的编辑修改成一个sed脚本,然后根据需要反复应用这些更改。你唯一需要注意的是要确保你做的顺序改变工作。如果你把这些sed命令在脚本中,例如,“一”在你的原始文件的任何实例最终会成为“四”,因为每个的变化显示顺序将文件中的每一行。

s /一/两/ s /二/三/ s /三/四/

下面的脚本将文件引用“去年”到“2011”,“今年”“去年”和“明年”“今年”。还能改变“有”“有”和“有”,“有”和“了”到“有”,但前提是行包含“下一个”这个词。

s /去年去年今年/ 2011 / s / / / / / / /下/ s /有/ / s /下/ /

好吧,也许不是最好的例子,但它将改变这一切:

今年猫美元资金,我们去年有500美元,明年我们只有300美元,我们将有550美元

到这个:

去年sed - f sed6美元资金,我们有2011年的500美元,我们只有300美元,今年我们将会有550美元

只是显示,您可以指定这个变化将取决于特定的内容。你也可以限制你改变,第一个10行一个文件,减少任何意想不到的改变的机会通过添加规范如下:

去年10 {1,s / / 2011 / s /今年去年/ s / / / /下/ s /有/ / s /下/这/}

如下所示的sed命令可以派上用场,如果你想删除html标记从一个文件中,只留下文本。它通过寻找字符串开始除了> <,包含一些文本,然后在>结束。在这个表达式中,[^ >]*字符串匹配任何内容除了>和尽可能多的,因为是在我们到达>的迹象。这种技术可以节省你大量的时间,如果你需要从html文件只提取文本。$ sed - e ' s / < [^ >] * > / / g的指数。html >索引。txt还有一系列指定字符集,可以节省你的时间使用sed因为您可以使用表达式显示自己而不必创建字符集。

[:alnum:]字母(a - z - z 0 - 9][:α]字母(a - z - z)[空白:]空格或制表符(:cntrl)任何控制字符(数字:)数字位数[0 - 9][图:]任何可见字符(没有空格)(低:)小写[a - z][打印:]非控制性字符[punct:]标点字符[空间:]空格(上部:):大写的[a -ž][xdigit:]十六进制数字(0 - 9 f f]

如下所示的命令,例如,将剔除任何从字母还包含数字的字符串。

sed ' s / \([[:α:]][[数位:]]\ \ + + [[:alnum:]] * \) \ ?/ / myfile g”

sed实用程序更复杂,更比我们大多数人已经认识到的。鉴于两足够好的在线教程和例子,你可能会发现自己更能利用这种强大的Unix实用工具。

阅读更多的桑德拉Henry欧洲杯男足-Stocker Unix作为第二语言在ITworld博客并遵循最新的新闻,推特脸谱网

版权©2013 IDG通信公司。足球竞彩网下载

企业网络2022的10个最强大的公司