Sed
sed 是一个精简的、非交互式的编辑器。它能执行与编辑vi和emacs相同的编辑任务。sed编辑器不提供交互使用方式:只能在命令行输入编辑命令、指定文件名,然后在屏幕上察看输出。sed编辑器没有破坏性。它不会修改文件,除非用shell重定向来保存输出结果。缺省情况下,所以的输出都被打印到屏幕上。
sed 编辑器在shell脚本中很有用,因为在shell脚本中使用像vi或emacs这类交互式编辑器,要求脚本用户精通该编辑器,而且还会导致用户对打开的 文件做出不需要的修改。如果需要执行多项编辑任务,或是不想为shell命令行上的sed命令加引号,也可以把sed命令写在一个叫做sed脚本的文件里。记住,在命令行输入命令时,shell会设法转换命令中所有的元字符或空白。sed命令中凡是可能被shell解释的字符都必须加引号进行保护。
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有
改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。
1. 定址功能
可以通过定址来定位你所希望编辑的行,该地址用数字构成,用逗号分隔的两个行数表示以这两行为起止的行的范围(包括行数表示的那两行)。如1,3表示1,2,3行,美元符号($)表示最后一行。范围可以通过数据,正则表达式或者二者结合的方式确定。
2.sed命令调用格式
调用sed命令有两种形式:
* sed [options] 'command' file(s)
* sed [options] -f scrīptfile file(s)
a\ 在当前行后面加入一行文本。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
c\ 用新的文本改变本行的文本。
d 从模板块(Pattern space)位置删除行。
D 删除模板块的第一行。
i\ 在当前行上面插入文本。
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写) 打印模板块的第一行。
q 退出Sed。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。
W file 写并追加模板块的第一行到file末尾。
! 表示后面的命令对所有没有被选定的行发生作用。
s/re/string 用string替换正则表达式re。
= 打印当前行号码。
*把注释扩展到下一个换行符以前。
以下的是替换标记
* g表示行内全面替换。
* p表示打印行。
* w表示把行写入一个文件。
* x表示互换模板块中的文本和缓冲区中的文本。
* y表示把一个字符翻译为另外的字符(但是不用于正则表达式)
3. 选项 -e command, --expression=command
允许多台编辑。
-h, --help 打印帮助,并显示bug列表的地址。
-n, --quiet, --silent 取消默认输出。
-f, --filer=scrīpt-file 引导sed脚本文件名。
-V, --version 打印版本和版权信息。
4. 元字符集
^ 锚定行的开始 如:/^sed/匹配所有以sed开头的行。
$ 锚定行的结束 如:/sed$/匹配所有以sed结尾的行。
. 匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d。
* 匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] 匹配一个指定范围内的字符,如/[Ss]ed/匹配sed和Sed。
[^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\) 保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
& 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
\ 锚定单词的结束,如/love\>/匹配包含以love结尾的单词的行。 x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个o的行。
x\{m,\} 重复字符x,至少m次,如:/o\{5,\}/匹配至少有5个o的行。 x\{m,n\} 重复字符x,至少m次,不多于n次,如:/o\{5,10\}/匹配5--10个o的行。
5. 实例
5.1删除:d命令
* $ sed '2d' example-----删除example文件的第二行。
* $ sed '2,$d'
example-----删除example文件的第二行到末尾所有行。
* $ sed '$d' example-----删除example文件的最后一行。
* $ sed '/test/'d
example-----删除example文件所有包含test的行。
5.2替换:s命令
* $ sed 's/test/mytest/g'
example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
* $ sed -n
's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
* $ sed
's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加
localhost,变成192.168.0.1localhost。
* $ sed -n
's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
* $ sed 's#10#100#g'
example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
5.3选定行的范围:逗号
* $ sed -n
'/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。
* $ sed -n '5,/^test/p'
example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。
* $ sed
'/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。
5.4多点编辑:e命令
* $ sed -e '1,5d' -e
's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执
行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
* $ sed
--expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。
5.5从文件读入:r命令
* $ sed '/test/r file'
example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
5.6写入文件:w命令
* $ sed -n '/test/w file'
example-----在example中所有包含test的行都被写入file里。
5.7追加命令:a命令
* $ sed
'/^test/a\\--->this is a example' example
awk
awk是一种程序语言,对文档资料的处理具有很强的功能。awk名称是由它三个最初设计者的姓氏的第一个字母而命名的: Alfred V.Aho、Peter J. We i n b e rg e r、Brian W. Kernighan。
awk 最初在1 9 7 7年完成。1985年发表了一个新版本的awk,它的功能比旧版本增强了不少。awk能够用很短的程序对文档里的资料做修改、比较、提取、打印等处理。如果使用C 或Pascal等语言编写程序完成上述的任务会十分不方便而且很花费时间,所写的程序也会很大。
awk不仅仅是一个编程语言,它还是linux系统管理员和程序员的一个不可缺少的工具。
awk语言本身十分好学,易于掌握,并且特别的灵活。
gawk是G N U计划下所做的awk,gawk最初在1 9 8 6年完成,之后不断地被改进、更新。
gawk 包含awk 的所有功能。
1.gawk的主要功能
gawk 的主要功能是针对文件的每一行( l i n e ),也就是每一条记录,搜寻指定的格式。当某一行符合指定的格式时,gawk 就会在此行执行被指定的动作。gawk
依此方式自动处理输入文件的每一行直到输入文件档案结束。
gawk经常用在如下的几个方面:
• 根据要求选择文件的某几行,几列或部分字段以供显示输出。
• 分析文档中的某一个字出现的频率、位置等。
• 根据某一个文档的信息准备格式化输出。
• 以一个功能十分强大的方式过滤输出文档。
• 根据文档中的数值进行计算。
2.如何执行gawk程序
基本上有两种方法可以执行gawk程序。
如果gawk 程序很短,则可以将gawk 直接写在命令行,如下所示:
gawk 'program' input-file1 input-file2 ...
其中program 包括一些pattern和action。
如果gawk 程序较长,较为方便的做法是将gawk 程序存在一个文件中,
gawk 的格式如下所示:
gawk -f program-file input-file1 input-file2 ...
gawk 程序的文件不止一个时,执行gawk 的格式如下所示:
gawk -f program-file1 -f program-file2 ... input-file1 input-file2 ...
3.文件、记录和字段
一般情况下,gawk可以处理文件中的数值数据,但也可以处理字符串信息。如果数据没有存储在文件中,可以通过管道命令和其他的重定向方法给gawk提供输入。当然,
gawk只能处理文本文件(A S C I I码文件)。
电话号码本就是一个gawk可以处理的文件的简单例子。电话号码本由很多条目组成,每一

match001
- 粉丝: 8
最新资源
- 5种ceemdan组合时间序列预测模型Python代码(包括ceemdan-lstm、ceemdan-cnn-lstm等)
- 江苏移动通信有限责任公司员工绩效考核实施细则精.doc
- 最新国家开放大学电大《优秀广告作品评析答案》网络核心课形考网考作业.docx
- 工程项目管理计划书.doc
- 基于PLC双轴位置控制.docx
- 基于复矢量PI控制器的模型参考自适应三相永磁同步电机高速低载波比无速度传感器控制仿真研究 - MATLAB 宝典
- 第8章-网络营销的策略组合.ppt
- (源码)基于NodeMCU的可视化通知提醒系统.zip
- 系统集成测试(SIT)报告.docx
- 基于MATLAB的GMSK系统的设计仿真.doc
- 离心风机辐射噪声仿真分析:从结构模态到声源辐射噪声的全流程解析 · 辐射噪声 深度版
- 专题讲座资料(2021-2022年)大工秋Java程序设计在线作业.docx
- (源码)基于Arduino的EDeliveryRobot.zip
- Comsol光子晶体仿真技术:拓扑荷、偏振态、三维能带及Q因子计算
- 基于非支配排序的多目标鱼鹰优化算法求解柔性作业车间调度问题的MATLAB实现
- (源码)基于多种编程语言和框架的物联网服务器与客户端.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


