我需要丢弃$ 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
}
}
}
任何帮助都会很棒,谢谢!
答案 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