(awk)在字段中丢弃带有截断字符串的记录

时间:2013-12-10 02:04:49

标签: arrays awk

我需要丢弃$ 2中使用截断字符串的所有行(使用awk)。截断的字符串是包含在较长字符串中的字符串(例如,与记录1相比,下面的记录2和4被截断)。

输入(制表符分隔):

line1 AAABBAAA
line2 BB
line3 CCCC
line4 B

获得此输出:

line1 AAABBAAA
line3 CCCC

我尝试过类似的事情:

{array[++a]=$2}

END{
  for(i in array){
    if($2 ~ /i/ && (length($2) >= length(i))){
      print $0
    }
  }
}

任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用index function

来简化此操作
awk '{for (k in a) if (index(a[k], $2) > 0) next;a[$2]=$2};{print}' file.txt
line1 AAABBAAA
line3 CCCC