您的位置:首页 > 其它

sed&awk学习总结

2012-07-28 15:33 232 查看
1、 流式编辑: sed&awk学习(4小时)

1) sed学习。

a)sed常见语法为sed -options ‘地址指定/命令指定’ 文件指定
[>输出文件],地址可以是起始行和结束行,也可以是模式匹配行。命令指定就是对于在地址范围的行执行操作。如果命令很多可以写在一个文件里面

b)sed基于行的执行用户给出的操作,可以是多个操作,操作之间用分号隔开,它并没有改变源文件,而是将文件读入模式缓冲区并在模式缓冲区执行用户的指令,然后将结果输出到标准输出。一般在命令前面加上指定的地址范围,可以用正则表达式匹配行地址。常用的一些操作有d删除,p打印,s///g替换,常用选项有-n,如果不指定-nname默认打印到标准输出,如果指定-n需要指定p命令才能打印到标准输出。

2)awk学习。

a)awk是文本处工具。但是个人感觉更像一门语言,首先有变量,数组,流程控制(和C很像),函数,还有内建函数。awk和sed能做一些相同的事情,但是awk更偏重于处理字段。常见语法格式为awk ‘[BEGIN{}]
[/模式匹配/]{}[END{}]’输入文件,也可以将命令写在文件里面用-f参数指定。在BEGIN模块中主要做一些变量初始化工作,然后匹配匹配模式的记录会被执行{}中的命令。最后END块会做些结束处理工作,比如如果在BEGIN中修改了FS,在END块中可以改回去。

b)awk常见内建变量有FNR,FS,RS,NR,OFS,ORS,NF。FNR和NR用的比较少,但是有种情况很有用,如果需要处理多个文件,FNR是当前文件的记录数,NR是所有的记录,他可以判断当前处理的记录在哪个文件中。这样在2个文件中如果有相同的字段可以通用一些变量。

c)awk函数,主要分自定义和内建函数。

一)自定义函数如果传的参数比实际定义的多并不会报错,而只是给出警告。如果定义的比实际多,name后面的参数被看为局部变量,习惯上会在局部变量前空几个字节。自定义函数以function+functionname(参数列表){函数体}形式定义。在函数体中可以用return返回。如果在外面用则会报错。另外在awk中没有直接的引用传递参数。不过可以通过数组来作为形参传递,因为数组本来就是引用的地址。

二)awk内建函数主要有输出函数,字符串函数,算术函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: