shell awk-------未完待续

来源:百度文库 编辑:神马文学网 时间:2024/04/25 19:22:16
[摘要]这个文档主要的目的是熟悉awk的一些简单用法;用一些例子来进行一些语法的学习;【为什么要用awk】学习一个东西不只是盲目的学习,更要问问自己这个东西有什么用;自己为什么学,这样才有可能针对性的学习;三个理由:第一:基于文本的样式扫描和处理是我们经常做的工作;第二:awk是一个简单的工具,当然这是相对于其强大的功能来说的;第三:awk是一个容易获得的工具;【awk简介】awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。【例子一:学习awk格式】awk '{print $1, $2, $3, $4, $5}' emp_names    //将文本文件emp_names的每一行的第一,二,三,四,五个字段显示出来 ;  [例子二:学习awk模式]$ awk '/AL/ {print $3, $2}' emp_names         //匹配的项目被包含在斜线 (/pattern/) 中,这里要匹配的项目是AL; 把包括AL的行的第三,二个字段显示出来; 【例子三:学习awk分号】$ awk '/AL/ {print $3, $2 ; print $4, $5}' emp_names    //没有加分号之前,四个字段是在同一行显示的;加了分号之后,第三,二字段在上面一行,第四,五字段在下面一行显示; 【例子四:学习awk管道符号|】$ awk '/AL|IN/' emp_names                     //进行了多个模式匹配,这就是管道符号的作用 【例子五:学习awk之NR】
$ awk -F":" '{print NR,$1,$2,$3}' emp_names  //NR 是打印进输出每行的序号
【例子六】$ awk -F":" '/4601[2-5]/' emp_names        //找出员工号码处于 46012 和 46015 之间的所有行; 【例七】内建变量FS保存输入域分隔符的值,默认是空格或tab。我们可以通过-F命令行选项修改FS的值。如$ awk -F":" '{print $1,$5}' test       将打印以冒号为分隔符的第一,第五列的内容。 PS:[记录与字段]

记录和字段的关系 :记录包括N个字段,字段组成记录;

记录的分隔符是换行,字段的分隔符是空格; 【参考文档及网站】1:E:\shell 下的word 文档2:   awk 使用手册 3:awk用法小结4:awk学习笔记 5:awk命令详解