#!/bin/bash #本人第一次学习Sed,先做个总结
1.sed是什么
sed是一个精简的、非交互式的编辑器。它能执行与编辑vi/ex相同的编辑任务。sed编辑器不提供交互式使用方式:只能在命令行中输入编辑命令、指定文件名,然后在屏幕上查看到输出结果。sed编辑器没有破坏性--它不会修改文件,除非使用shell重定向来保存输出结果缺省情况所有的输出都被发送到屏幕。sed编辑器在shell脚本中很有用。因为在shell脚本中使用像vi/ex这类交互式编辑器,要求脚本用户精通该编辑器,而且还会导致用户对打开的文件作出不需要的修改。如果需要执行多项任务,或是不想为shell命令行上的sed命令加引号,也可以把sed命令写在一个叫做sed脚本的文件里。记住,在命令行中输入命令时,shell会设法转换命令行中所有的原字符/空白。sed命令中凡是可能被shell解释的字符都必须加上引号加以保护。
2.如何工作
工作原理:sed编辑器逐行处理文件/输入,把当前正在处理的行保存在一个临时的缓冲区--模式缓存区,然后处理此行--在该行执行sed命令,并且将输出结果发送到屏幕(要注意的是,若之前的命令取消了打印,这里就不会有输出了),sed每处理完一行,就将其从哦姑娘模式还从去中删除,然后处理下一行,知道处理完给定的输入文件文件/键盘输入,sed就结束了生命。当然,你也可以使用重定向、管道把结果发往其他位置。 工作 特点: 盘要处理的行都被拷贝到临时缓冲区,然后对这个副本进行编辑,故不会影响/破坏文件。
格式 sed 'command' filename(s)
3.处理指定行(定址) sed默认情况下处理所有的行 ,你可使用 定址的方式高诉sed要处理的行。 定址的方式可是数字/正则表达式,或二者的结合。
1* 使用数字定址
% sed '1,3d' file
在屏幕上打印文件flie中除1-3以外的所有行,1,3指定命令(删除"d")处理行的范围,%是csh的提示符
1* 使用正则表达式 定址
% sed '/Tom/!d' file
在屏幕上打印文件flie中不含有串Tom的行, 更多的命令参看下面给出的列表
4.命令与列表
更多的命令选项如下表