Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68483
  • 博文数量: 17
  • 博客积分: 508
  • 博客等级: 下士
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-20 12:56
文章分类
文章存档

2010年(17)

分类:

2010-09-13 09:28:51

     每条记录的都是有成为字段的词组成,默认情况下,字段间用空白符(即空格或制表符)分隔。每个这样的词称为一个字段,awk在内置变量NF中保存记录的字段数,NF的值因行而异,期上限与具体版本的实现相关,每行最多100个字段,可以创建新的字段。每个字段都是从第一个字段(用$1表示)开始,然后是第二个字段($2),依次类推。
     awk  '{print NR,$1,$2,$5}' datafile
     输入字段的分隔符awk的内置变量FS中保存了输入字段分隔符的值。使用FS的默认值,awk用空格或制表符来分隔字段,并且删除各字段钱多余的空格或制表符,可以通过BEGIN中或命令行上赋值来改变FS的值。在命令行上改变FS的值需要使用-F选项,后便制定代表新分隔符的字段
     1.从字段改变字段分隔符:
      awk  -F:'/pattern/ {print $1 ,$2}' datafile
     2.使用多个字段分隔符
 若有多个字符被用于字段分隔符FS,则FS对应是一个正则表达式字符串,且被括在方括号中,字段分隔符是空格、冒号,或制表符。
     awk -F '[:\t]'  '{print $1,$2,$3}' datefile
     -F后中方框号中是一个正则表达式,当遇到空格、冒号或制表符是,awk会把它当作字段分隔符,这个表达式两头加了引号,这样就不会shell当成自己的元字符来解释,(注意shell使用方括号来进行文件名扩展)
3.输出字段分隔符
   默认的输出字段分隔符为空格,保存在awk内置变量OFS中,无论OFS如何设置,print语句中用于分隔字段的逗号,在输出时,都被转换成OFS的值,若用OFS的默认值,则$1和$2 之间的逗号都回被转换成单个空格,print函数打印这两个字段都会在她们之间加一个空格
    如果没有用逗号来分隔字段,则输出结果中的字段将堆在一起,除非字段间有逗号分隔,否则输出结果的字段间不会加上OFS的值,另外OFS的值可以改变
    awk -F :'/pattern/{print $0}' datafile
    变量$0按输入文件中原样保存当前记录,记录被原封不懂地显示到屏幕上。
  
阅读(2353) | 评论(0) | 转发(0) |
0

上一篇:AWK(-)记录篇

下一篇:awk之模式与操作篇

给主人留下些什么吧!~~