每条记录的都是有成为字段的词组成,默认情况下,字段间用空白符(即空格或制表符)分隔。每个这样的词称为一个字段,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按输入文件中原样保存当前记录,记录被原封不懂地显示到屏幕上。
阅读(2363) | 评论(0) | 转发(0) |