Система Orphus

вторник, 25 ноября 2014 г.

Удалить уникальные записи по первому столбцу (awk)

Понадобилось мне сегодня из файлика удалить все уникальные записи, но сравнение надо было делать не по все строке, а только по первому столбцу. Чтобы было понятней, приведу пример такого файла:
user1        09:57:44
user1        10:28:09
user1        12:45:10
user2        10:38:31
user3        10:12:28
user4        10:08:51
user4        10:55:07
user5        10:25:42
user5        11:56:25
user5        12:20:24
Отсюда надо удалить строки, начинающиеся на "user2" и "user3".
Не долго думая, решил подкрепить свои знания по awk...


И получился такой вот велик:
cat my.log | awk 'BEGIN {prev1=""; prev2=""; prev_check=0} { if ($1==prev1) { if (prev_check==1) { print $0 } else { print prev2"\n"$0 }; prev_check=1 } else { prev_check=0 }; prev1=$1; prev2=$0 }' | column -t

С разбивкой по строкам, для удобства восприятия:
awk 'BEGIN {prev1=""; prev2=""; prev_check=1} { 
 if ($1==prev1) { 
  if (prev_check==0) { 
   print $0 
  } else { 
   print prev2"\n"$0 
  }; 
  prev_check=0 
 } else { 
  prev_check=1 
 }; 
 prev1=$1; 
 prev2=$0 
}'




Заметку писал для себя, дабы не забыть.

Я знаю, что можно сделать более изящно... Но на первых шагах у меня такой велик вышел. Главное, работает как надо.





Информация с сайта http://blog.angel2s2.ru/.

Похожие статьи

0 коммент.:

Отправить комментарий