一、split函数
awk的内建函数split允许你把一个字符串分隔为单词并存储在数组中。你可以自己定义域分隔符或者使用现在FS(域分隔符)的值。
split (string, array, field separator)
split (string, array) -->如果第三个参数没有提供,awk就默认使用当前FS值。
在Hadoop中取出最近七天的文件代码

上图表示很多天的数据,获取七天的数据的Hdfs路径
hdfs -ls /app/ps/rank/police/spam_mining/worldtree_spaminfo/ |
awk '{
cnt = split($NF, arr, "/");
print cnt ;
if(match(arr[cnt], /^[0-9]+$/))
{
print arr[cnt]
}
}' | tail -7 |
awk '{
print "-input '${HDFS_PATH}'"$1" "
}';
解释说明
NF
表示当前行的字段数量
$NF
表示最后一个字段
cnt = split($NF, arr, "/" ) 表示输出在arr数组内,用 / 分割; 返回值为数组的长度
match(arr[cnt], /^[0-9]+$/) 检查正则表达式是否能够匹配
在正则中用 / / 中间部分包含正则表达式
^[0-9]+$ 表示以数字开头和结尾的字符串
网友评论