URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8833
[ Назад ]

Исходное сообщение
"sed, Удалить строки с частично одинаковым содержанием"

Отправлено SuN , 19-Авг-10 14:59 
Доброго времени суток!

Есть задачка по sed-у:

Есть файл с текстом примерно такого содержания:
_____________________________________________________________________________________
date,          time ,    name,   port,      ID,                IP                    
08/16/2010, 19:06:23, Door@3d<>$, 44, CORE_0.0:868311000, 195.189.249.58            
08/16/2010, 19:06:33, Door@3d<>$, 46, CORE_0.0:868311000, 195.189.249.58              
08/16/2010, 19:07:14, Door@3d<>$, 55, CORE_0.0:868311000, 195.189.249.58              
08/16/2010, 19:11:11, Door@3d<>$, 78, KERN_ID_LAN, 195.189.249.58                    
08/16/2010, 19:17:25, Ford, 90, KERN_ID_LAN, 195.191.13.6                            
08/16/2010, 19:19:11, Achilles, 95, KERN_ID_LAN, 195.140.228.30                      
08/16/2010, 19:44:08, Head, 167, CORE_ID_LAN, 195.135.237.20                          
08/16/2010, 19:06:33, Door@3d<>$, 46, CORE_0.0:868311000, 195.189.249.58              
08/16/2010, 19:07:14, Door@3d<>$, 55, CORE_0.0:868311000, 195.189.249.58              
08/16/2010, 19:11:11, Door@3d<>$, 78, CORE_0.0:868311000, 195.189.249.58              
08/16/2010, 19:45:14, Head, 1344, CORE_ID_LAN, 195.135.237.20                        
08/16/2010, 19:51:50, Head, 20322, CORE_ID_LAN, 195.135.237.20                        
08/16/2010, 19:06:33, Door@3d<>$, 46, CORE_0.0:868311000, 195.189.249.58              
08/16/2010, 19:07:14, Door@3d<>$, 55, CORE_0.0:868311000, 195.189.249.58              
08/16/2010, 20:07:42, Aux fgj&$FGf, 241, CORE_ID_LAN, 195.242.114.93                
08/16/2010, 20:09:58, Help!! pls!!, 251, CORE_ID_LAN, 195.242.114.93                  
08/16/2010, 20:14:20, Head, 254, CORE_ID_LAN, 195.135.237.21                        
08/16/2010, 20:18:50, dflkgjdfklg$%#$^, 265, CORE_0.0:51080034, 195.216.210.240      
08/16/2010, 19:07:14, Openeddoor, 55, CORE_0:0:868311000, 195.189.249.58            
08/16/2010, 19:07:14, Openeddoor, 55, CORE_0:0:868311000, 195.189.249.58              
08/16/2010, 19:07:14, Openeddoor, 55, CORE_0:0:868311000, 195.189.249.58              
08/16/2010, 19:11:11, ClosedDoor<>$, 78, CORE_0:0:868311000, 195.189.249.58          
_____________________________________________________________________________________|

примечание:
первой строки в файле нет, вписал для восприятия(это всё потом в БД пойдёт).
поля Date, Time, Port - различны во всех строках.
Name - любой набор символов.

задача:
Необходимо удалить, оставив только одну, повторяющиеся строки только с одинаковыми Name, ID, IP.
Эти строки могут идти не последовательно, а по всему тексту в разброс или пачками.

В идеале должно получиться примерно так:
_____________________________________________________________________________________
date,          time ,    name,   port,      ID,                IP                    
08/16/2010, 19:06:23, Door@3d<!>$, 44, CORE_0.0:868311000, 195.189.249.58            
08/16/2010, 19:11:11, Door@3d<>$, 78, KERN_ID_LAN, 195.189.249.58                    
08/16/2010, 19:17:25, Ford, 90, KERN_ID_LAN, 195.191.13.6                            
08/16/2010, 19:19:11, Achilles, 95, KERN_ID_LAN, 195.140.228.30                      
08/16/2010, 19:44:08, Head, 167, CORE_ID_LAN, 195.135.237.20                          
08/16/2010, 20:07:42, Aux fgj&$FGf, 241, CORE_ID_LAN, 195.242.114.93                  
08/16/2010, 20:09:58, Help!! pls!!, 251, CORE_ID_LAN, 195.242.114.93                  
08/16/2010, 20:14:20, Head, 254, CORE_ID_LAN, 195.135.237.21                          
08/16/2010, 20:18:50, dflkgjdfklg$%#$^, 265, CORE_0.0:51080034, 195.216.210.240      
08/16/2010, 19:07:14, Openeddoor, 55, CORE_0:0:868311000, 195.189.249.58              
08/16/2010, 19:11:11, ClosedDoor<>$, 78, CORE_0:0:868311000, 195.189.249.58          
_____________________________________________________________________________________|

Спасибо за помощь! :) :beer:


Содержание

Сообщения в этом обсуждении
"sed, Удалить строки с частично одинаковым содержанием"
Отправлено phpcoder , 19-Авг-10 15:07 
Ответил вам тут: http://www.opennet.me/openforum/vsluhforumID9/7560.html#9



"sed, Удалить строки с частично одинаковым содержанием"
Отправлено SuN , 19-Авг-10 15:26 
>Ответил вам тут: http://www.opennet.me/openforum/vsluhforumID9/7560.html#9
>sort -t, -k3 -k5 -k6 in.txt | uniq -f1 -f2 -f4

<к сожалению не работает.> прошу прощения, при детальном исследовании причины нелогичного поведения, логически правильно оформленного фильтра - обнаружил в конце строк лишние пробелы в рандом порядке. После удаления онных, всё получилось! :)
Ещё раз спасибо! Сам чёт не додумался идти в этом направлении. ))

кстати, ещё вопрос: поле Name может содержать пробелы, можно ли как-то "сепарировать" uniq?


Если кто сумеет также выполнить задачу, но с помощью sed - прошу отписываться. ;)