删除包含下一行子字符串的几乎重复项

时间:2015-09-07 20:04:33

标签: linux unix awk sed uniq

我需要知道一种删除重复字符串的方法,但让我解释一下,因为我已经使用过uniq。在文件中,我得到以下两行:

ANASI:A=4-63261950;
ANASI:A=4-63261950,ES=541;

字符串4-63261950在两行中都是重复的,但是行本身是不同的,只有该字符串在两行中都相等。我只需要一种方法来处理整个文件并删除第一行,只留下ANASI:A=4-63261950,ES=541;的那一行。该文件将包含几行与此完全相同的方案。有没有办法用sed或其他东西做到这一点?

3 个答案:

答案 0 :(得分:4)

拯救......

假设您的分隔符和结构保持不变

sort file | awk -F"[;,]" '!a[$1]++'

将根据词汇顺序选择第一个(,< ;

答案 1 :(得分:0)

如果文件很大(内存有问题或问题)

sort YourFile | awk -F '[;,]' 'Last != $1{print}{Last = $1}'

答案 2 :(得分:0)

这可能适合你(GNU sed):

 sed -r 'N;/^(.*);\n\1,/!P;D' file

这使用移动窗口来比较连续的线对以打印所需的匹配。