shell脚本awk

最近在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脚本的能力,搜索水很深。 

原文地址:https://www.cnblogs.com/hpf311/p/2705209.html