提取特定字段
测试数据:
数据格式:tab键分割,前三条记录5个字段,最后一条记录4个字段
要求:抽取字段数为5的记录的第二个和第三个字段
2019-03-11 21:05:07 209.58.131.47 57103 122.192.12.71 22270
2019-03-11 21:05:07 209.58.131.48 57104 122.192.12.71 22270
2019-03-11 21:05:07 209.58.131.49 57105 122.192.12.71 22270
2019-03-11 21:05:07 209.58.131.50 57106 122.192.12.71
awk
在shell命令行输入命令调用awk
awk系统变量:
FILENAME:当前文件名
FS:字段分隔符,默认是空格键
NR:当前记录数
NF:当前记录中的域数量
[hadoop@slave107 suiji]$ awk 'BEGIN {FS="\t"} {if(NF==5) print NR,$2,$3 }' test.txt
1 209.58.131.47 57103
2 209.58.131.48 57104
3 209.58.131.49 57105
awk脚本
#!/bin/awk -f
BEGIN{FS="\t"}
{if(NF==5) print NR,$2,$3}
END{print FILENAME}
[hadoop@slave107 suiji]$ ./extract_fields test.txt
1 209.58.131.47 57103
2 209.58.131.48 57104
3 209.58.131.49 57105
test.txt