最近在hadoop上跑同步的问题, awk脚本神器也是学了一下。
虽然看起来好像比较慢, 但是效果真的很不错。
主要是在hadoop上求差集的操作。
一类的格式是objurl
另外一类的格式是 objurl \t seg1 \t seg2
或者 objurl \t seg3
规则是第二类 减去 第一类的差集。 同时需要根据objurl去重。 去重的时候需要 尽量选择seg3这种。 在同种之类随机选择。
脚本如下:
BEGIN {
first = "";
second = "";
third = "";
yes = 1;
}
{
if(first != $1){
if(yes == 0){
print first"\t"second"\t"third
}
if($2==""){
yes = 1;
}
else{
yes = 0;
}
}
if(yes == 0){
if($2 != "" && $3 == ""){
print $0
yes = 1;
}
}
first = $1;
second = $2;
third = $3;
}
END{
if(yes == 0){
print first"\t"second"\t"third
}
}
然后又深入看了下AWK脚本。 感觉真的很神奇,加上grep 和sed 简直就是文本处理神器。 在数据处理这方面一定要具备使用shell脚本的能力,搜索水很深。