2013-12-10 23 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