多年来,我使用sed的主要途径是改变文本。有很多时候,我想要改变一个字符串到另一个第一或每次它出现在一个文件或命令输出。
$ sed ' s / 2011/2012 / ' > <新老sed年代美元/明天/今天/ < msg1 > msg2美元sed的s /, /: / g <文件
毕竟,sed是流编辑器和它的极好,飞速转动。
sed命令,但是,也很好的与选择相关的其他任务文本从一个文件中。例如,您可以选择在一个文本文件通过使用一个脑袋和尾巴的组合命令,但这需要一点想法:
头-11 myfile |尾1美元
或者,您可以使用一个sed命令,很容易挑出11行。说我们有一个任务列表,我们想看看最后任务列表中。使用sed是这样的:
11 $ sed - n ' p '任务11:取回帆船在水里
如果你想选择100行从中间文件的数以百万计的线,何况时间的差异和sed做这项工作可能是相当大的。
你也可以做同样的事情是这样的:
11美元sed - n p任务11:取回帆船在水里
sed也可以从文件中删除一行。帆船实际上是在水之后,你可能想把11日线在你的任务列表(但是记住sed是识别的线数不满足):
美元sed - 11 d的任务
或
美元sed - 11 d任务
在这个命令指示sed -我做编辑的地方——换句话说,改变源文件。在上面的“p”意味着“打印”,这里的“d”意味着“删除”。如果你想删除一个范围而不是一行的行,您可以指定一个范围的线和一个表达式像11日13(11到13行)甚至11美元(第十一行到最后一行的文件)。这个命令将只留下的第十行你的任务列表:
美元sed - 11美元d的任务
在“11美元,美元”代表文件中的最后一行。
您可以使用一个类似的语法,如果你想显示这些行而不是消除他们从文件:
$ p $ sed - n ' 11日的任务11:在水中取回帆船12:石膏板客厅13:重建门廊14:捐赠的骆驼宠物动物园15:休假16:找一个新的工作17:出售的帆船大利润18:帆船的照片挂在新家的地下室19:从此过上了幸福的生活
这个命令将只显示行。它不会影响到原始文件。- n阻止你看到的所有其他文件的行。
如果你想替换任务11你的任务列表中,你可以在两个步骤是这样的:
sed - 11 d的任务美元sed -我”“我11:举办帆船聚会湾的任务
这可能看起来有点比现在更加棘手。记住,第二个11是我们插入文本的一部分。读为“在第11行,插入11…”等等。您可以检查您的更改是否按预期工作使用这个命令:
11美元sed - n p任务11:举办帆船聚会在海湾
sed命令也可以允许你让全球就地编辑。例如,你可以改变每个实例的“帆船”“快艇”如果你决定你是厌倦了搬下10节。
sed - s /美元帆船、快艇、任务
然后您可以验证您的更改你的任务列表的sed命令的行为很像grep:
$ sed - n ' /船/ p”任务11:举办一个快艇派对在海湾18:出售的快艇大剖面19:挂画的快艇在地下室里
grep等效(grep船任务),当然,更简单,但很高兴看到sed有这么多的灵活性。事实上,sed俏皮话不仅仅是一个工具,但可用于这样的独立的脚本:
双间距文本文件:
# !/bin/sed - f #双:两倍行距G一个文本文件
改变一个字符串到另一个指定范围的行(在这种情况下,Linux或Linux“Unix或Linux”前三行:
# !/bin/sed - f 1,3 {s /[我]inux / Unix或Linux / g}
很长时间以来我第一次O ' reilly“sed和awk”的书,但是我还是觉得很有趣,看看我能做这些命令。