2013-12-10 25 views
2

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

输入(制表符分隔):

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

你可以通过使用index function

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

辉煌简化这个!非常感谢1_CR! – lqdo2000